O Commit só funciona depois que fecho meu aplicativo
Olá, utilizo firebird 1.5, e estou passando o seguinte codigo:
Button1
TbCliente.Insert;
Button2
TbCliente.Post;
TransCliente.Commit;
Minha IBDataSet esta linkada com meu TransCliente, e meu TransCliente esta como ReadCommited
ele grava beleza, porem nao me exibe o registro, soh se eu fechar minha aplicacao e abrir novamente,
o que pode ser que esta acontecendo?
desde ja agradeco
[]s
Button1
TbCliente.Insert;
Button2
TbCliente.Post;
TransCliente.Commit;
Minha IBDataSet esta linkada com meu TransCliente, e meu TransCliente esta como ReadCommited
ele grava beleza, porem nao me exibe o registro, soh se eu fechar minha aplicacao e abrir novamente,
o que pode ser que esta acontecendo?
desde ja agradeco
[]s
Titanius
Curtidas 0
Respostas
Maneljunior
25/05/2005
Boa noite Titanius! 8)
Acho que você pode resolver seu problema utilizando um componente IBQuery, com as devidas ligações (Database, IBTransaction) e utilizar o código abaixo depois do comando de post.
With IBQuery1 Do
Begin
SQL.Clear;
SQL.Add(´Commit´);
Open;
Close;
End;
Acho que este trecho de código resolve seu problema.
Atenciosamente,
Acho que você pode resolver seu problema utilizando um componente IBQuery, com as devidas ligações (Database, IBTransaction) e utilizar o código abaixo depois do comando de post.
With IBQuery1 Do
Begin
SQL.Clear;
SQL.Add(´Commit´);
Open;
Close;
End;
Acho que este trecho de código resolve seu problema.
Atenciosamente,
GOSTEI 0
Titanius
25/05/2005
Amigo, ManelJunior
Eu nao posso usar isto, pois estou usando o IBDataSet, e por incrível que pareça uso a mesma funcao para todas as telas de cadastro e só não funciona no Cliente...
já dei o Close no DataSet e tudo, mas continua o problema..
[]s
Eu nao posso usar isto, pois estou usando o IBDataSet, e por incrível que pareça uso a mesma funcao para todas as telas de cadastro e só não funciona no Cliente...
já dei o Close no DataSet e tudo, mas continua o problema..
[]s
GOSTEI 0
Mmoreira
25/05/2005
titanius
o correto seria vc usar da seguinte maneira:
IBDataSet1.Transaction.CommitRetaining;
depois quando vc for finalizar sua aplicação no evento OnDestroy por exemplo vc coloca:
if IBTransaction1.InTransaction then IBTransaction1.Commit;
bom eu estou acostumado a usar os componentes DBX entao se tiver cometido algum erro ... os colegas ai do forum me corrijam
o correto seria vc usar da seguinte maneira:
IBDataSet1.Transaction.CommitRetaining;
depois quando vc for finalizar sua aplicação no evento OnDestroy por exemplo vc coloca:
if IBTransaction1.InTransaction then IBTransaction1.Commit;
bom eu estou acostumado a usar os componentes DBX entao se tiver cometido algum erro ... os colegas ai do forum me corrijam
GOSTEI 0
Titanius
25/05/2005
é mais no DBX não existe isso... acho que este comando é igual ao ReadCommit, ou seja, ele espera o Commit para mandar pro banco, o incrível que sempre funcionou, porem agora parou de funcionar...
GOSTEI 0
Mmoreira
25/05/2005
tente fazer da maneira que eu te falei só para fazer o teste ...
voce fez assim:
tente assim:
IBTable1.POST;
IBTable1.Transaction.CommitRetaining;
voce fez assim:
Button1 TbCliente.Insert; Button2 TbCliente.Post; TransCliente.Commit;
tente assim:
IBTable1.POST;
IBTable1.Transaction.CommitRetaining;
GOSTEI 0
Titanius
25/05/2005
Agora parou dar este erro e esta dando outro:
lock conflit on no wait transaction
:(
lock conflit on no wait transaction
:(
GOSTEI 0
Markrj
25/05/2005
de um ApplyUpdates no dataset logo após o post, vai resolver o problema
GOSTEI 0