O Commit só funciona depois que fecho meu aplicativo

Delphi

25/05/2005

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


Titanius

Titanius

Curtidas 0

Respostas

Maneljunior

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,


GOSTEI 0
Titanius

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


GOSTEI 0
Mmoreira

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


GOSTEI 0
Titanius

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

Mmoreira

25/05/2005

tente fazer da maneira que eu te falei só para fazer o teste ...

voce fez assim:
Button1 

TbCliente.Insert; 


Button2 
TbCliente.Post; 
TransCliente.Commit; 


tente assim:

IBTable1.POST;
IBTable1.Transaction.CommitRetaining;


GOSTEI 0
Titanius

Titanius

25/05/2005

Agora parou dar este erro e esta dando outro:

lock conflit on no wait transaction



:(


GOSTEI 0
Markrj

Markrj

25/05/2005

de um ApplyUpdates no dataset logo após o post, vai resolver o problema


GOSTEI 0
POSTAR