Curso de dbExpress e DataSnap - ParteVIII
Veja o neste artigo de Guinther Pauli, mais um capítulo do curso sobre dbExpress e DataSnap.
Curso de dbExpress e DataSnap
Parte VIII – DataSetFields
Este exemplo mostra como utilizar DataSetFields em ClientDataSets. DataSetField é um campo TField especial que pode representar o conteúdo de outro DataSet.
Configure uma conexão dbExpress para o banco EMPLOYEE do Interbase. Coloque um SQLConnection apontando para essa conexão. Coloque também duas SQLQuery, um DataSetProvider, um ClientDataSet, dois DataSources, um DBGrid, um Button e um DBNavigator.
Relacione os componentes conforme mostrado a seguir:
object SQLConnection1: TSQLConnection
end
object SQLQuery1: TSQLQuery
SQLConnection = SQLConnection1
End
object SQLQuery2: TSQLQuery
SQLConnection = SQLConnection1
End
object DataSource1: TDataSource
DataSet = SQLQuery1
End
object DataSetProvider1: TDataSetProvider
DataSet = SQLQuery1
End
object DBGrid1: TDBGrid
DataSource = DataSource2
End
object DBNavigator1: TDBNavigator
DataSource = DataSource2
End
object ClientDataSet1: TClientDataSet
ProviderName = 'DataSetProvider1'
End
object DataSource2: TDataSource
DataSet = ClientDataSet1
end
Seu formulário deve estar semelhante ao mostrado a seguir:
Figura 1.
Configura a instrução SQL da primeira Query para:
select * from CUSTOMER
E da segunda para:
select * from SALES
where CUST_NO=:CUST_NO
Configure o parâmetro (propriedade Params) da segunda Query como mostrado a seguir:
Figura 2.
Adicione todos os TField no ClientDataSet, e observe que teremos um DataSetField:
Figura 3.
Esse campo representa o DataSet detalhe. Com isso temos no mesmo DataSet acesso a tabela principal (master) e tabela detalhe (detail).
No evento OnCreate do form digite:
procedure TFrmMain.FormCreate(Sender: TObject);
begin
ClientDataSet1.Open;
end;
No evento OnClick do botão digite:
procedure TFrmMain.BitBtn1Click(Sender: TObject);
begin
ClientDataSet1.ApplyUpdates(0);
end;
A figura a seguir mostra a aplicação em execução.
Figura 4.
Navegue até a última coluna do DBGrid e observe que ela lista o DataSetField. Clique em [...] e note que uma outra DBGrid será aberta automaticamente, mostrando dados da tabela detalhe, relacionados com o registro selecionado no DBGrid principal.
Figura 5.
Note que usamos para isso somente um único ClientDataSet. Além disso, alterações no DataSetField serão refletidos no DataSet principal (por isso só precisamos de um ApplyUpdates, que aplicará alterações em ambas as tabelas no banco).
Download
Você pode fazer download de todos os exemplos deste curso a partir do endereço http://cc.borland.com/Author.aspx?ID=222668. É preciso fazer o cadastro na BDN, que é gratuito e pode ser feito a partir do endereço http://bdn.borland.com
dbExpress, DataSnap e ClientDataSet: Técnicas Avançadas
Para mais informações sobre acesso a dados no Delphi e técnicas avançadas, sugiro a leitura do meu livro, “Delphi: Programação para Banco de Dados e Web”, como apoio para o aprendizado das tecnologias. Na obra mostro várias técnicas introdutórios e avançadas de desenvolvimento com ClientDataSet, dbExpress e DataSnap (multicamadas, incluindo SOAP e COM+). Para mais informações, consulte o link http://www.clubedelphi.net/guinther

Curso(s):
Formações:
Space do autor


1
0
