Fórum DBE TQuery+ClientDataSet #130670
19/03/2010
0
Estou com um probleminha.
Tenho 2 tabelas no ORACLE.
CHEQUE
CHEQUEFATURA
Preciso que quando cadastrar em CHEQUE, já cadastre em CHEQUE_FATURA.
Se der erro em algum momento, não grave em lugar nenhum.
Utilizei TQuery->TDatasetProvider->TClientDataSet->TDataSource para as duas tabelas.
Try
Database1.StarTransaction
cdsCHEQUEIDCHEQUE.AsInteger := {proxima sequence};
cdsCHEQUEIDCHEQUE.Post;
cdsCHEQUEIDCHEQUE.ApplyUpdates(-1);
cdsCHEQUEFATURAIDCHEQUE.AsInteger := cdsCHEQUEIDCHEQUE.AsInteger;
cdsCHEQUEFATURA.Post;
cdsCHEQUEFATURA.ApplyUpdates(-1);
Database1.Commit;
Except On E: Exception Do
Begin
Database1.rollback;
MessageDlg('Erro: ' + E.Message, mtError, [mbOK], 0);
Exit;
End;
End;
Até ai tudo bem, mas se desse erro de constraint (campo nulo por exemplo) na tabela CHEQUEFATURA, o commit era realizado mas só salvava na tabela CHEQUE.
Quer dizer, o post passa batido, mas no ApplyUpdates não retornava erro.
Li em um site para utilizar o DatasetProvider para este controle no evento OnUpdateError jogando o erro com raise exception.create(e.message), mas eu teria que dar CancelAplly no CDSCHEQUE?
Pois se o usuario acertar o campo e mandar gravar de novo, o cdsCHEQUE não estará em modo de edição. Tem como controlar isso?
Tenho 2 tabelas no ORACLE.
CHEQUE
CHEQUEFATURA
Preciso que quando cadastrar em CHEQUE, já cadastre em CHEQUE_FATURA.
Se der erro em algum momento, não grave em lugar nenhum.
Utilizei TQuery->TDatasetProvider->TClientDataSet->TDataSource para as duas tabelas.
Try
Database1.StarTransaction
cdsCHEQUEIDCHEQUE.AsInteger := {proxima sequence};
cdsCHEQUEIDCHEQUE.Post;
cdsCHEQUEIDCHEQUE.ApplyUpdates(-1);
cdsCHEQUEFATURAIDCHEQUE.AsInteger := cdsCHEQUEIDCHEQUE.AsInteger;
cdsCHEQUEFATURA.Post;
cdsCHEQUEFATURA.ApplyUpdates(-1);
Database1.Commit;
Except On E: Exception Do
Begin
Database1.rollback;
MessageDlg('Erro: ' + E.Message, mtError, [mbOK], 0);
Exit;
End;
End;
Até ai tudo bem, mas se desse erro de constraint (campo nulo por exemplo) na tabela CHEQUEFATURA, o commit era realizado mas só salvava na tabela CHEQUE.
Quer dizer, o post passa batido, mas no ApplyUpdates não retornava erro.
Li em um site para utilizar o DatasetProvider para este controle no evento OnUpdateError jogando o erro com raise exception.create(e.message), mas eu teria que dar CancelAplly no CDSCHEQUE?
Pois se o usuario acertar o campo e mandar gravar de novo, o cdsCHEQUE não estará em modo de edição. Tem como controlar isso?
Alexandre Carvalho
Curtir tópico
+ 0
Responder
Posts
19/03/2010
William Brazilino
ApllyUpdates(0)
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)