Mestre/Detalhe com BD access e ADO
[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
____________________________________________________________
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
Curtidas 0
Respostas
Kirow
23/08/2009
Alguem ai nunca fez ligação Mestre/Detalhe entre delphi e access?????
Qualquer forma, eu só preciso fazer a ligação!!!!!
help...
Qualquer forma, eu só preciso fazer a ligação!!!!!
help...
GOSTEI 0
.lg.
23/08/2009
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.
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.
GOSTEI 0
Elip2008
23/08/2009
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.
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.
GOSTEI 0
Kirow
23/08/2009
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
Erro de sintaxe (operador faltando) na expressão de consulta ´Codigo = ? Codigo
GOSTEI 0
Elip2008
23/08/2009
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..
codigo = :codigo, naum pode ser ´?´. e naum pode haver espaços entre os ´:´ e nome do parametro.
Boa sorte ai..
GOSTEI 0
Kirow
23/08/2009
Valeu, acabei de descobrir, agora vi seu poste e é isso mesmo, tinha espaço entre o ponto e o nome do parametro...
Brigadu!!!!
Brigadu!!!!
GOSTEI 0
Kirow
23/08/2009
Show de Bola, [b:a7446567b6]elip2008[/b:a7446567b6] Muito Obrigado, de certim... fico BLZ..[.
Brigado!!!!
Brigado!!!!
GOSTEI 0
Elip2008
23/08/2009
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]
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]
GOSTEI 0
Kirow
23/08/2009
Amigo, muito bacana a video aula, valeu pela dica.... vai ser muito util!!!!
GOSTEI 0