Fórum Master detail. Como fazer? #228734
29/04/2004
0
Estou pesquisando na internet mais a maioria das coisas que acho são em ingles, e as que são em portugues nao sao explicações e sim códigos.
Obrigada
Flávia
Flavia_mococa
Curtir tópico
+ 0Posts
29/04/2004
Flaviosan
Depende do banco de dados que voce usa e o acesso aos dados utilizado(componentes) no sistema, se oce passar essas informacoes, ficara mais facil te ajudar.
Aguardo sua resposta.
Gostei + 0
29/04/2004
Rafael.valler
master-detail com dbexpress e firebird
Possuindo as tabelas TABELA_MESTRE e TABELA_DETALHE em seu banco de dados e um componente SQLConnection devidamente configurado, adicione ao seu DataModule os componentes seguintes e dê nome a eles (os nomes deste exemplo seguem entre parênteses à frente do nome do componente):
- Dois SQLDataSet (dst_Mestre e dst_Detalhe)
- Um DataSetProvider (dsp_Mestre)
- Dois ClientDataSet (cds_Mestre e cds_Detalhe)
- Três DataSource (dts_LinkMestre, dts_Mestre e dts_Detalhe)
2) Escreva a SQL de dst_Mestre na sua propriedade CommandText:
SELECT <colunas_da_tabela_mestre>
FROM TABELA_MESTRE
WHERE <coluna_chave_do_relacionamento_na_tabela_mestre> = :parametro
3) Configure na propriedade Params ´parametro´ conforme seu tipo, neste
caso, DataType = ftInteger.
4) Mude a propriedade DataSet de dts_LinkMestre para dst_Mestre
5) Escreva a SQL de dst_Detalhe na sua propriedade CommandText:
SELECT <colunas_da_tabela_detalhe)
FROM TABELA_DETALHE
WHERE <coluna_chave_do_relacionamento_na_tabela_detalhe> =
:<coluna_chave_do_relacionamento_na_tabela_mestre>
NOTA IMPORTANTE:
O nome do parâmetro na tabela detalhe tem que obrigatoriamente ser igual ao nome da coluna a que corresponde na tabela mestre.
6) Mude a propriedade DataSource de dst_Detalhe para dts_LinkMestre
7) Mude a propriedade DataSet de dsp_Mestre dst_Mestre
8) Mude a propriedade ProviderName de cds_Mestre para dsp_Mestre
9) Adicione os TFields do cds_Mestre e note a presença de um campo novo (campo anhinhado) que é quem será o responsável pelo relacionamento com a tabela detalhe.
10) Mude a propriedade DataSetField do cds_Detalhe, colocando nela o nome do campo anhinhado mencionado no item anterior.
11) Mude a propriedade DataSet de dts_Mestre para cds_Mestre
12) Mude a propriedade DataSet de dts_Detalhe para cds_Detalhe
13) Adicione os TFields do cds_Detalhe
Agora é só fornecer o valor de ´parametro´ (item 2) e abrir o cds_Mestre que o resto será feito automaticamente!
[img:57432daa67]http://forum.clubedelphi.net/images/smiles/icon_wink.gif[/img:57432daa67]
Gostei + 0
29/04/2004
Flavia_mococa
Se puderem me explicar como proceder com este banco...
Obrigada.
Gostei + 0
29/04/2004
Flaviosan
Vou tentar te ajudar.
As tabelas de exemplo são clientes (codcli, nomecli) e dependentes (coddep, nomedep, codcli),voce tem que ter uma adoquery que será o mestre, ligada a tabela clientes que deve estar ligada a um datasource e uma adoquery ligada a tabela dependentes, que será o detalhe. A sql da adoquery dependentes deve ser assim:
SELECT CODDEP, NOMEDEP FROM DEPENDENTES WHERE (CODCLI = :CODCLI)
Onde :CODCLI indica que voce vai estar usando parametro(o nome parametro deve ser igual ao nome da chave primaria da tabela de clientes, CODCLI).
Na propriedade DataSource adoquery dependentes indique o datasource da adoquery clientes.
Só isso deve resolver. Se tiver mais alguma duvida, é só perguntar.
Gostei + 0
02/05/2004
Flavia_mococa
Bjos
Gostei + 0
08/07/2005
Cristianojedi
Fiz o seu exemplo citado acima e me deparei com o seguinte erro:
´DBX Error: No Mapping for ErrorCode Found´.
O que pode ser esse erro???
Ele ocorre quando eu dou o ApplyUpdates.
Estou usando Interbase, Delphi 7.
Obrigado!!!
Cristiano Mário
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)