Artigo Clube Delphi Magazine 104 - Chaves no ClientDataSet

Veja a geração de chaves com master-detail e ClientDataSet.

 

Esse artigo faz parte da revista Clube Delphi Magazine edição 104. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler essa revista em PDF.

Delphi Expert

Chaves com ClientDataSet

Geração de chaves com master-detail eClientDataSet

 

Neste artigo veremos

·Geração de tabelas, generators e Stored Procedure em banco de dados Firebird;

·Criação de servidor de aplicação;

·Geração das chaves através de eventos do DataSetProvider;

·Criação da aplicação cliente e conexão através de DataSnap;

·Configuração do ClientDataset para gravação dos dados.

Qual a finalidade?

·Definir uma estrutura para se trabalhar com relacionamentos master-detail através do ClientDataSet onde as chaves primárias são geradas automaticamente pelo banco de dados.

Quais situações utilizam esses recursos?

·Relacionamentos master-detail onde as chaves são geradas pelo banco de dados através de generators.

 

Resumo do DevMan

Uma das maiores dificuldades dos desenvolvedores é sem dúvida quando temos dependências de chaves em um relacionamento master-detail do tipo Pedido x ItensPedido. Nesses casos precisamos passar para a tabela de detalhe a chave primária da tabelamaster, porém essa chave é gerada através de umatrigger (gatilho) que está no banco de dados. Isso cria uma dificuldade aos desenvolvedores para se ter controle sobre o processo, pois parte dele fica no banco de dados. Sendo assim se acaba optando por outras técnicas mais trabalhosas que podem deixar a aplicação com falhas no processo.

Neste artigo iremos criar toda uma estrutura para se trabalhar um relacionamentomaster-detail onde as chaves são geradas pelo banco de dados e teremos o controle dessa geração através de uma aplicação multi-camadas com a utilização dos componentesDataSetProvider eClientDataSet.

 

Todos nós sabemos ou pelo menos deveríamos saber que boa parte de um sistema baseia-se emmaster-detail. Para os iniciantes,master-detail significamestre-detalhe, ou seja, tabelas que dependem de outras tabelas para fazerem sentido. Alguns exemplos são clássicos tais comoNotas Fiscais eItens daNota Fiscal. Evidentemente que em um sistema emissor deNotas Fiscais precisaremos de duas tabelas, como mencionado a pouco. A primeira tabela conterá o cabeçalho da nota. São os dados fixos, essenciais como, por exemplo,Razão Social,Endereço,Valor Total da Nota,CNPJ do Cliente,CNPJ do Fornecedor, entre outros. A segunda tabela refere-se aos itens dessa nota, que são variáveis e podem ser mais de um. Por isso dizemos que seu relacionamento é1:n, ou, 1 para muitos. Em uma nota fiscal podemos vender mais de um item, por isso 1 para muitos.

Para os mais experientes, isso tudo não é novidade. O que muitos, até mesmo experientes, sentem dificuldade no dia-a-dia é o controle das chaves que fazem a ligação entre ambas tabelas. Os exemplos que dei aqui são apenas entre duas tabelas, mas imaginem diversas tabelas interligadas. Como controlar tantas chaves?

A idéia desse artigo é sanar as principais dúvidas referentes ao assunto e demonstrar técnicas para utilização de chaves comClientDataSet.

Para isso iniciaremos o nosso exemplo construindo um banco de dados com uma estrutura para que se possa simular a situação na qual o nosso exemplo propõe. Em nosso exemplo iremos utilizar oFirebird como banco de dados.

 

Nota: Não entrarei em detalhes quanto ao download e instalação do banco de dados por não fazer parte do escopo desse artigo, porém a dica é efetuar o download doFirebird no site do desenvolvedor emwww.firebirdsql.org.

 

Criando o banco de dados

Como mencionado vamos criar umBD noFirebird. Para isso, basta digitar o script daListagem 1 no seu programa preferido para rodar scripts e executar. Em nosso script criamos um banco utilizando oDialect 3, Page Size8192 e oCharacter Set como nenhum (None). No endereço do banco colocamos‘127.0.0.1:<caminho>DBExemplo.fdb’, onde127.0.0.1 é ohost (servidor) do banco,<caminho> deve ser trocado pela letra de drive e diretório onde deseja salvar o arquivo doBD e por fim o nome desseBD. Além dessas informações também é possível colocar a porta do servidor junto aohost, por exemplo:127.0.0.1/3050.

 

Listagem 1. Script de criação do banco de dados

SET SQL DIALECT 3;

CREATE DATABASE '127.0.0.1:<Caminho>DBEXemplo.fdb'

USER 'SYSDBA'

PAGE_SIZE 8192

DEFAULT CHARACTER SET NONE;

 

Enfim, troque a string'127.0.0.1:<Caminho>DBEXemplo.gdb' pelo caminho e nome de banco de dados que desejar.Em seguida criaremos as tabelas. São elas:TB_CLIENTE,TB_VENDEDOR,TB_PRODUTO, eTB_ITEMPEDIDO. O objetivo básico do exemplo será efetuar a inclusão de um pedido onde teremos itens de pedido vinculados e também onde a chave primária do pedido será gerada pelo banco de dados em uma" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados