Fórum Mestre/Detalhe com BD access e ADO #373972

23/08/2009

0

[b:e66245e49a]Pessoal minha duvida é o seguinte

Em um BD access com ADO estou tentando fazer Mestre detalhe

segui este tutorial q encontrei: Mas naum dá certo alguem tem um tutorial para mestre detalhe ou pode me ajudar....[/b:e66245e49a]
_____________________________________________________________
Neste Exemplo Utilizaremos Componentes ADO
Precisaremos dos seguites componentes:

1 ADOConection / 2 ADOQuery / 2 DataSource

Obtendo Conexão com o BANCO de Dados

1 - Clique sobre o ADOConection
2 - Estabelaça a Conexão com o BANCO atravez da propriedade ConnectionString


Vamos Iniciar o Processo Mestre / Detalhe

vamos denominar os seguintes nomes aos componentes:

ADOQueryPai
ADOQueryFilho

DataSourcePai
DataSourceFilho


Ligue os Seguintes Componentes

ADOQueryPai - DataSourcePai
ADOQueryFilho - DataSourceFilho

Clique Sobre ADOQueryFilho, e na Propriedade DataSource, Selecione DataSourcePai, isso que determinará a Relação

Como exemplo vamos supor que na tabelaPai o Campo chave seja ´Codigo´ e na tabelaFilho o Campo de Ligação tb seja ´Codigo´


Na Propriedade SQL do Componente ADOQueryPai Digita-se o Seguinte Comando:

Select *From TabelaPai

Na Propriedade Sql do Componente ADOQueryFilho Digita-se o Seguinte Comando:

Select *From TabelaFilho where id_codigo = : id_codigo



Na Propriedade Parameters do Componente ADOQueryFilho Adiciona-se um Parametro do Tipo Inteiro, se ja tiver adicionado automaticamente, Selecione o Parâmetro, clique na propriedade Direction e mude para Interiro Selecionando ´pdInput´

Agora e so Ativar as ADOQuery e ta Feito
____________________________________________________________


Kirow

Kirow

Responder

Posts

25/08/2009

Kirow

Alguem ai nunca fez ligação Mestre/Detalhe entre delphi e access?????

Qualquer forma, eu só preciso fazer a ligação!!!!!

help...


Responder

Gostei + 0

25/08/2009

.lg.

PS.: ´Quanta pressa em. A comunidade responde quando der e quando alguem souber... Se for olhar o tempo que vc esperou para postar a segunda mensagem (desesperado)... No outro dia ja teria 18 mensagens suas falando ´ninguem... help... sos...´.´

Deixando a ironia de lado...
No evento [b:6e915f734c]OnAfterScroll[/b:6e915f734c] da query master... vc chama a query filho passando o valor do field que no case é o seu [color=blue:6e915f734c]ID[/color:6e915f734c].

Assim que vc faz o seu Master/Detail.
Qlqr coisa postae.

Att,
.lg.


Responder

Gostei + 0

25/08/2009

Elip2008

Primeiramente adicione mais um DataSource (dsMaster) e um DataSetProvider (dspPai)
e dois ClientDataSet (cdsPai, cdsFilho) da guia Data Access.

Na propriedade sql do ADOQueryPai adicione:
select * from tabela_pai

Na propriedade sql do ADOQueryFilho adicione:
select * from tabela_filho where idPai = :idPai

//O parametro acima configurado precisar ser o mesmo que o campo ID da tabela_pai.
E ainda na sua propriedade Parameters selecione o parameter criado idPai e na
propriedade DataType selecione ftInteger. Agora o parametro estah configurado.

Adicione os campos aos ADOQuery´s, clicanco 2 vezes nos mesmos e clicando em Ctrl+F.

Na propriedade DataSet do dsMaster selecione o ADOQueryPai e na propriedade DataSource do
ADOQueryFilho selecione o dsMaster.
Na propriedade DataSet do dspPai selecione ADOQueryPai e na proprieade ProviderName do
cdsPai selecione dspPai, clique 2 vezes no cdsPai e de Ctrl+F para adicionar todos os
campos no cdsPai, veja que mais um campo eh criado, ADOQueryFilho, do tipo TDataSetField.
Agora na propriedade DataSetField do cdsFilho selecione cdsPaiADOQueryFilho. De dois clique
no cdsFilho e de Ctrl+F para adicionar os campos.
Na propriedade DataSet do DataSourcePai selecione o cdsPai.
Na propriedade DataSet do DataSourceFilho selecione o cdsFilho.


Agora quando vc precisar dah um insert, vc darah apenas no cdsPai. Porque tudo que voce fizer com
Pai serah transmitido para o filho. Lembrando que para Salvar Alteracoes, jah fica um pouco
diferente que nos ADoTable ou ADOQuery, ficando assim:
em delete:
cdsPai.Delete;
cdsPai.ApplyUpdates(0);

em Post:
cdsPai.ApplyUpdates(0);

em Cancel:
cdsPai.CancelUpdates;

Se voce tiver configurado mestre detalhe no seu banco de dados Access, precisa ainda modificar
a propriedade Options do dspPai poCascadeUpdades para True e poCascadeDeletes para True.

Espero ter ajudado. Qualquer coisa soh postar.


Responder

Gostei + 0

25/08/2009

Kirow

Pessoal, ao clicar duas veze no ADOQueryFilho e aperta CTRL + F aparece o seguinte erro:

Erro de sintaxe (operador faltando) na expressão de consulta ´Codigo = ? Codigo


Responder

Gostei + 0

25/08/2009

Elip2008

Talvez seja o seu parametro

codigo = :codigo, naum pode ser ´?´. e naum pode haver espaços entre os ´:´ e nome do parametro.

Boa sorte ai..


Responder

Gostei + 0

25/08/2009

Kirow

Valeu, acabei de descobrir, agora vi seu poste e é isso mesmo, tinha espaço entre o ponto e o nome do parametro...


Brigadu!!!!


Responder

Gostei + 0

25/08/2009

Kirow

Show de Bola, [b:a7446567b6]elip2008[/b:a7446567b6] Muito Obrigado, de certim... fico BLZ..[.


Brigado!!!!


Responder

Gostei + 0

25/08/2009

Elip2008

Obrigado ai, mas assiste a esta video do Rodrigo Carreiro Mourao
show d bola, c vc tiver ainda alguma como trabalhar com essa ferramenta
com certeza será resolvida. [url]https://www.devmedia.com.br/articles/viewcomp.asp?comp=14077[/url]


Responder

Gostei + 0

26/08/2009

Kirow

Amigo, muito bacana a video aula, valeu pela dica.... vai ser muito util!!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar