Melhor forma de trabalhar com tabelas relacionadas...
30/08/2004
0
estou migrando um sistema criado no Access para o Delphi utilizando o MySql 4.0 e a paleta Zeos. Este sistema possui duas tabelas principais (PM´s e Beneficiários) que estão relacionadas pela matrícula do PM. A primeira tabela contém os dados do PM e a segunda contém a matrícula do PM (chave) e o nome dos beneficiários (caso este possua). Tenho algumas dúvidas quanto a este caso:
1 - Ao se fazer a navegação, uma grid ligada a tabela de beneficiários mostrava os registros ligados àquele PM, podendo até mesmo fazer a inclusão ou alteração na própria grid. Como faço para que o mesmo tipo de navegação seja feito e gostaria de saber se é possível fazer inclusões e alterações na DBgrid;
2 - Não estou usando DBNavigator. Estou utlizando botões comuns para fazer a navegação (First, Prior, Next, Last). Gostaria de saber como faço para se pular de 10 em 10 registros;
Agradeço desde já todo tipo de ajuda. Muito obrigado.
Elias Jr
Posts
30/08/2004
Rikvitor
Quanto ao se pular de 10 em 10 registros, tenho uma solução que, embora possa existir outra mais simplificada, pode facilmente ser implementada. aí vai:
Procedure NextN;
Var I : integer;
Const N = 10; // Essa const define quantos registros você quer pular
Begin
DataSourcer1.disablecontrols;// ou algo parecido, não me lembro bem... isso desliga temporariamente todos os componentes visuais da tabela.
for i := 1 to n do
table1.next;
DataSourcer1.enablecontrols;// O contrário, reconecta os componentes a tabela.
End;
o mesmo pode ser feito para retroceder...
Um abraço, e bom trabalho.....
Agradeço se puder mandar qualquer material
didático de qualquer ramo da informática para eu ler.
. . . . . . e-mail rikvitor@brbank.com.br
------------------------------------------[/color:7a77b0bb19] :idea:
30/08/2004
Rikvitor
Quanto ao se pular de 10 em 10 registros, tenho uma solução que, embora possa existir outra mais simplificada, pode facilmente ser implementada. aí vai:
Procedure NextN;
Var I : integer;
Const N = 10; // Essa const define quantos registros você quer pular
Begin
DataSourcer1.disablecontrols;// ou algo parecido, não me lembro bem... isso desliga temporariamente todos os componentes visuais da tabela.
for i := 1 to n do
table1.next;
DataSourcer1.enablecontrols;// O contrário, reconecta os componentes a tabela.
End;
o mesmo pode ser feito para retroceder...
Um abraço, e bom trabalho.....
Agradeço se puder mandar qualquer material
didático de qualquer ramo da informática para eu ler.
. . . . . . e-mail rikvitor@brbank.com.br
------------------------------------------[/color:8964d0fc39] :idea:
30/08/2004
Rikvitor
Quanto ao se pular de 10 em 10 registros, tenho uma solução que, embora possa existir outra mais simplificada, pode facilmente ser implementada. aí vai:
Procedure NextN;
Var I : integer;
Const N = 10; // Essa const define quantos registros você quer pular
Begin
DataSourcer1.disablecontrols;// ou algo parecido, não me lembro bem... isso desliga temporariamente todos os componentes visuais da tabela.
for i := 1 to n do
table1.next;
DataSourcer1.enablecontrols;// O contrário, reconecta os componentes a tabela.
End;
o mesmo pode ser feito para retroceder...
Um abraço, e bom trabalho.....
Agradeço se puder mandar qualquer material
didático de qualquer ramo da informática para eu ler.
. . . . . . e-mail rikvitor@brbank.com.br
------------------------------------------[/color:4ab9841275] :idea:
31/08/2004
Elias Jr
agradeço pela dica. Irei testá-la e logo informo se funcionou. Quanto à minha primeira pergunta, eu quero saber como faço para que a grid receba o nome dos parentes do PM que estão numa tabela à parte, relacionada com tabela principal apenas pela matrícula do PM. Tipo assim:
Elias Júnior, matrícula 001. Caso eu tenha parentes cadastrados na outra tabela, a grid exibirá os nomes. Caso negativo, ao navegar a grid ficará em branco.
Gostaria de saber também se é possível inserir e alterar dados a partir da dbgrid. Valeu pela ajuda...
31/08/2004
Xtreme
Sim é possivel, é so deixar a propriedade readonly como false.
31/08/2004
Elias Jr
Sim é possivel, é so deixar a propriedade readonly como false.[/quote:d006dffd45]
Saudações amigos,
agradeço pelas dicas, testei e todas duas funcionam. Só preciso saber agora como faço para listar na grid apenas os dados relacionados. Minhas tabelas são essas: PM e Beneficiários. A primeira contém os dados do PM e a segunda contém os beneficiários dele (filhos, conjuges, parentes)...as duas estão relacionadas pela matrícula do PM. Queria que ao fazer a navegação a grid só exibisse os beneficiários caso este PM possua, senão a grid fica em branco. Agradeço qualquer ajuda. Muito obrigado.
31/08/2004
Elias Jr
Saudações amigo,
estou utilizando o banco MySql 4.0.20 e a paleta Zeos no Delphi 5 Pro. Coloquei os componentes num Data Module (Database, DBTransact, Query e UpdateSql), uma para a tabela de PM e outra pra tabela de beneficiários. No form de cadastro tenho todos os campos setados para um datasource (com exceção da DBGrid) que por sua vez está setado para a query de PM. O que eu quero é que ao se navegar o dbgrid exiba os beneficiários do PM caso este contenha. Senão a grid fica em branco. Muito obrigado.
27/10/2004
Xtreme
27/10/2004
Osocram
Saudações amigo,
estou utilizando o banco MySql 4.0.20 e a paleta Zeos no Delphi 5 Pro. Coloquei os componentes num Data Module (Database, DBTransact, Query e UpdateSql), uma para a tabela de PM e outra pra tabela de beneficiários. No form de cadastro tenho todos os campos setados para um datasource (com exceção da DBGrid) que por sua vez está setado para a query de PM. O que eu quero é que ao se navegar o dbgrid exiba os beneficiários do PM caso este contenha. Senão a grid fica em branco. Muito obrigado.[/quote:11111f3835]
Eu nunca usei esse tal de Zeos....
mas vc pod tentar isso aqui..
na QryPm vc faz isso
select *
from PM
e liga um DataSource (DSPm)
ok... agora faz a filha dele q eh o QryBeneficiario
aqui vc colocar um sql c parametros
select *
from Beneficiario
where matricula = :matricula
e liga a propriedade DataSource da QryBeneficiario c o DSPm
unico cuidado q deve ter eh q o parametro ´ :matricula ´ deve ser o mesmo nome do codigo da QryPm...
Dae sempre q vc selecionar um Pm.. a filha vai receber automaticamente este parametro.. e vc so vera as filhas q pertencem aquele codigo.
Clique aqui para fazer login e interagir na Comunidade :)