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:

Como criar um mestre detalhe em delphi
Figura 1. Criando um novo projeto

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.

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:

Como criar um mestre detalhe em delphi
Figura 2. Detalhe

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
Como criar um mestre detalhe em delphi
Figura 3. Configuração dos componentes

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:

Como criar um mestre detalhe em delphi
Figura 4. Teste da configuração do SqlDataset

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.

Como criar um mestre detalhe em delphi
Figura 5. Configuração do CDSEquipamento

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.

Como criar um mestre detalhe em delphi
Figura 6. Conclusão

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.

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.