ClientDataSet Triggers Atualização automática?
Boa noite,
Criei um Triggers no meu sistema q gera o id de uma tabela, qdo testo no banco de dados está tdo funcionando as 1000 maravilhas, só que qdo levei isso no delphi eu dei um insert no cliente dataset deixo o cliente digitar todos os dados menos o id e qdo mando gravar o delphi me retorna erro dizendo q o campo id devi ter um valor. o estranho q ele não deixou a Triggers gerar o ID, pra resolver isso eu fiz o seguinte no evendo beforepost coloquei o ID := 0; assim ele executa a Triggers e gera o código blz. soh q tem um problema ele não ta atualizando o registro na tela.. na tela ele mostra como se o id ainda fosse 0.
uma vez eu li aki e tem jeito de se alguem atualizar um registro na tabela e esse registro estiver no clientdataset ele atualiza automaticamente, alguem sabe me dizer como faz isso. pois acho q isso já resolveria o meu problema com id e outro q viram a acontecer.
sem mais p/ o momento,
desde já agradeço,
bruno eduardo
Criei um Triggers no meu sistema q gera o id de uma tabela, qdo testo no banco de dados está tdo funcionando as 1000 maravilhas, só que qdo levei isso no delphi eu dei um insert no cliente dataset deixo o cliente digitar todos os dados menos o id e qdo mando gravar o delphi me retorna erro dizendo q o campo id devi ter um valor. o estranho q ele não deixou a Triggers gerar o ID, pra resolver isso eu fiz o seguinte no evendo beforepost coloquei o ID := 0; assim ele executa a Triggers e gera o código blz. soh q tem um problema ele não ta atualizando o registro na tela.. na tela ele mostra como se o id ainda fosse 0.
uma vez eu li aki e tem jeito de se alguem atualizar um registro na tabela e esse registro estiver no clientdataset ele atualiza automaticamente, alguem sabe me dizer como faz isso. pois acho q isso já resolveria o meu problema com id e outro q viram a acontecer.
sem mais p/ o momento,
desde já agradeço,
bruno eduardo
Brunosh3
Curtidas 0
Respostas
_rodfaria_
09/09/2005
Veja
http://forum.clubedelphi.net/viewtopic.php?t=60879&highlight=auto+incremento+trigger
http://www.mers.com/INPRISE/FAQ/2955.HTML
Rod.
http://forum.clubedelphi.net/viewtopic.php?t=60879&highlight=auto+incremento+trigger
http://www.mers.com/INPRISE/FAQ/2955.HTML
Rod.
GOSTEI 0
Roger1976
09/09/2005
Eduardo, eu já tive esta mesma dúvida. Ao invés de utilizar o before post, use o after insert.
Vai ficar assim:
datamodule.clientdataset.FieldByName(´ID´).AsInteger := 0;
Espero ter te ajudado.
Vai ficar assim:
datamodule.clientdataset.FieldByName(´ID´).AsInteger := 0;
Espero ter te ajudado.
GOSTEI 0
Thomaz_prg
09/09/2005
Colega, vou postar as formas que uso...
Quando eu uso IBX, uso co componente IBDataset, que possui uma propriedade chamada Generator, que faz o papel da trigger, e não preciso me preocupar em atualizar o ID na tela que o componente faz isso por mim...
Quando uso ClientDataSet, salvo a posição atual do cursor, atualizo o Clientdataset e retorno pra posição onde estava... dessa forma:
var p:pointer;
begin
{comandos de inserção}
p:= clientdataset.getbookmark;
clientdataset.refresh;
clientdataset.gotobookmark(p);
faço isso pois após o refresh o ponteiro não volta pra posição onde estava antes.
Bom, não sei se é a forma mais certa, ou ,melhor de se fazer, mas faço assim e funciona blz.
Quando eu uso IBX, uso co componente IBDataset, que possui uma propriedade chamada Generator, que faz o papel da trigger, e não preciso me preocupar em atualizar o ID na tela que o componente faz isso por mim...
Quando uso ClientDataSet, salvo a posição atual do cursor, atualizo o Clientdataset e retorno pra posição onde estava... dessa forma:
var p:pointer;
begin
{comandos de inserção}
p:= clientdataset.getbookmark;
clientdataset.refresh;
clientdataset.gotobookmark(p);
faço isso pois após o refresh o ponteiro não volta pra posição onde estava antes.
Bom, não sei se é a forma mais certa, ou ,melhor de se fazer, mas faço assim e funciona blz.
GOSTEI 0