Fórum Refresh no IBDataSet #257351
05/11/2004
0
Olá! Tenho um IBDataSet cuja SelectSQL é uma SQL enorme com muitos joins. Sendo que nessa SQL ele une uma tabela detalhe com o seu mestre para pode obter várias outras informações. Existem dois campos principais na tabela detalhe dessa relação:
AUTO | CODIGO
Ambos os campos são inteiros sendo que o primeiro é um campo que é gerado automaticamente por uma trigger e o segundo é o código que identifica a qual registro do mestre essa linha vai estar ligada.
Nessa tabela eu também tenho um outro campo varchar(1).
Esse form mostra o IBDataSet em questão em um DBGrid. Vou mostrar agora como estão os dados desses campos principais no DBGrid:
AUTO | CODIGO
1 | 1
2 | 1
3 | 1 *linha marcada no DBGrid
4 | 2
5 | 2
6 | 3
Nessa tela o usuário deveria marcar uma linha dessa tabela de detalhe (no caso a terceira linha) e depois pressionar um botão da tela. Quando o botão é pressionado eu pego o código do mestre para esse registro (no caso 1). E nesse momento eu tenho que pegar todas as linhas que tem esse código do mestre e setar nelas o meu campo varchar(1) para um outro valor qualquer (digamos ´X´). Logo eu não pude simplesmente Editar o IBDataSet, fazer a alteração e ´Postar´. Eu executei um UPDATE em uma IBSQL para atualizar os dados pra mim e aí é que acontece o problema. Somente a linha marcada no DBGrid está sendo atualizada (o valor definido para o campo aparece no DBGrid). E mesmo assim só na primeira vez. Se eu apertar novamente o botão e alterar novamente o valor do campo essa linha não é atualizada. Os demais detalhes desse do
Se alguém puder me dar uma ajuda eu agradeço! Até!
AUTO | CODIGO
Ambos os campos são inteiros sendo que o primeiro é um campo que é gerado automaticamente por uma trigger e o segundo é o código que identifica a qual registro do mestre essa linha vai estar ligada.
Nessa tabela eu também tenho um outro campo varchar(1).
Esse form mostra o IBDataSet em questão em um DBGrid. Vou mostrar agora como estão os dados desses campos principais no DBGrid:
AUTO | CODIGO
1 | 1
2 | 1
3 | 1 *linha marcada no DBGrid
4 | 2
5 | 2
6 | 3
Nessa tela o usuário deveria marcar uma linha dessa tabela de detalhe (no caso a terceira linha) e depois pressionar um botão da tela. Quando o botão é pressionado eu pego o código do mestre para esse registro (no caso 1). E nesse momento eu tenho que pegar todas as linhas que tem esse código do mestre e setar nelas o meu campo varchar(1) para um outro valor qualquer (digamos ´X´). Logo eu não pude simplesmente Editar o IBDataSet, fazer a alteração e ´Postar´. Eu executei um UPDATE em uma IBSQL para atualizar os dados pra mim e aí é que acontece o problema. Somente a linha marcada no DBGrid está sendo atualizada (o valor definido para o campo aparece no DBGrid). E mesmo assim só na primeira vez. Se eu apertar novamente o botão e alterar novamente o valor do campo essa linha não é atualizada. Os demais detalhes desse do
Se alguém puder me dar uma ajuda eu agradeço! Até!
Delphi32
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)