Utilizarei a ferramenta Rad Studio 2010 para confecção deste artigo. Vamos ao exemplo.
Passo 1
A primeira coisa a ser feita é criar um novo projeto, e logo após criar um Data módulo. Supondo que já temos nossa conexão com a base de dados criada, vamos fazer a conexão da tabela mestre. Supondo também que já temos o domínio da confecção do famoso quarteto ( Sql Connection, SqlDataset, DatasetProvider e Clientdataset), mostraremos a sua estrutura sem muito detalhamento:
Passo 2
Após o passo 1, vamos ao nosso “Detalhe“.
Neste exemplo estaremos utilizando uma tabela de orçamentos como a tabela mestre e uma tabela de Equipamentos como detalhe.
Relacionado: O que são formulários mestre detalhe?
Repare que no procedimento Detalhe nós não utilizaremos um DatasetProvider e existirá um DataSource para fazer o vínculo com a tabela mestre. Agora devemos adicionar um DataSource, um SqlDataset, e um ClientDataSet e escolher a tabela com quem será feita a conexão, Vamos nomeá-los com nomes intuitivos para que fique fácil identificar os componentes. Nomeie o DataSource de DSOrcamentoEquipamento e utilize o padrão de nomenclatura da tabela mestre para o SqlDataset e o Clientdataset. A estrutura deve ficar desta forma:
Passo 3
faremos agora a configuração dos componentes restantes.
- 3.1 - Primeiro selecione o DSOrcamentoEquipamento e aponte a propriedade DataSet para o nosso SDSOrcamento.
- 3.2 - Selecione o SDSEquipamento e na propriedade SqlConnection aponte para nossa conexão ExemploConn, logo após aponte a propriedade DataSource para DSOrcamentoEquipamento, e em seguida na propriedade CommandText Faça a seguinte Query:
SELECT * FROM EQUIPAMENTO
WHERE ID_ORCAMENTO= :ID_ORCAMENTO
Passo 4
Feito isso é hora de testar se a configuração do SqlDataset está correta. Tome cuidado quando for montar a Query e respeite os espaços em branco na segunda linha, caso contrário não funcionará. Agora teste a configuração do SqlDataset clicando na propriedade active. Se conseguir marcar como true a configuração está perfeita. Logo após, dê um duplo clique no componente e adicione todos os campos da tabela equipamento:
Passo 5
Agora nos resta configurar o CDSEquipamento para mostramos os campos da tabela equipamento. Não utilizaremos o ProviderName neste componente, em vez disso vamos a propriedade DataSetFiled e escolher o novo campo criado chamado de CDSOrcamentoSDSEquipamento, resultado do nosso Mestre detalhe bem sucedido.
Passo 6
Para finalizar, de um duplo clique no CDSEquipamento e adicione todos os campos do mesmo. Feito isso o nosso Mestre Detalhe estará completo.
Nosso Mestre Detalhe exibirá todos os Equipamentos que possuir o mesmo ID_Orçamento que o selecionado na Query, ou seja, criamos um filtro para tabela Equipamento podendo utilizar esta estrutura para mostrar somente os equipamentos pertinentes à consulta que for feita.
Relacionado: Guia de Delphi
Saiu na DevMedia!
- O que são formulários mestre detalhe?: Falhas de gravação é um dos piores cenários que podemos pensar durante o desenvolvimento de software e podemos minimizar esse problema com o padrão Mestre/Detalhe.
- Construindo uma aplicação mestre detalhe em PHP: Ao longo deste curso veremos como implementar um formulário "mestre detalhe", nos concentrando nos aspectos principais desse relacionamento e como ele é representado no código, na interface do sistema e no banco de dados.
- Eu sobrevivo sem UML?: Você planeja suas aplicações antes de começar a programar? Ou é daqueles que pensa enquanto escreve? Cuidado, você corre o risco de chegar no meio do projeto sem saber para onde ir. Para evitar isso descubra neste Guia a UML.
Saiba mais ;)
- JavaScript redirect: Nesta documentação aprenderemos como redirecionar o usuário em JavaScript utilizando window.location.
- JavaScript switch: Nesta documentação de JavaScript veremos como utilizar a estrutura condicional switch para criar scripts capazes de executar diferentes blocos de código de acordo com diferentes condições.
- JavaScript if/else: Nesta documentação de JavaScript veremos como utilizar a estrutura condicional if/else para criar scripts com diferentes fluxos de execução.