Ainda sobre Exceções de Banco no IW ( EDatabaseError )

23/05/2003

1

Olá a todos. Relembrando o meu problema:

Usamos no Server NT4 SP6 + Firebird, no terminal usamos XP + Delphi 7.

Bem eu afirmei que quando desenvolvo páginas Intraweb, esses formulários não tratam exceções de Banco de Dados como um erro dentro de um try/except (o Delphi trata apenas em tempo de projeto).

Exemplo: Um campo do formulário tenta gravar um dado, mas a trigger não aceita, pois está em desacordo. Então é gerada uma exceção de banco EDatabaseError com a mensagem gerada pelo banco.

O Guinter me disse para não usar try/except num ApplyUpdates, pois essas exceções nunca chegam, a menos que eu desse um ´raise´ no evento OnReconcileError.

Guinter: Não entendi como usar o raise nesse Evento, embora tenha estudado sobre o mesmo.

Mas eu pergunto: Porque num formulário VCL do Delphi essas exceções SÃO tratadas num try/except ? Porque formulários Intraweb não a tratam ?

No evento OnReconcileError, eu consigo manipular o Erro e dar uma mensagem ao usuário, mas não consigo dar um RollBack na transação.

Vejam um exemplo típico que funciona na VCL, mas não no Intraweb, com o mesmo Delphi 7 e os mesmos componentes:

procedure TfmCadastro.BotaoIWClick(Sender: TObject)
var
TD: TTransactionDesc;

begin

TD.TransactionID := 1;
TD.IsolationLevel := xilREADCOMMITTED;

try

ClientDataSet.ApplyUpdates(0);
SQLConnection.Commit( TD );

except

SQLConnection.Rollback( TD );
WebApplication.ShowMessage( ´Houve Erro na Gravação dos Dados.´ );
Abort;

end;

end;

A princípio parece a mesma coisa, pois posso criar uma variável Global no DataModule ( TD ) e manipulá-la dentro do Evento OnReconcileError para dar o Rollback.

Ou fazer como faço agora, dentro do OnReconcileError:

RWebApplication.ShowMessage( E.Message );
Action := raCorrect;

Os componentes que uso para fazer cache e updates são:

SQLConnection, SQLQuery, DataSetProvider, ClientDataSet e um DataSource.

Falei pra caramba.... ufa !

Agradeço a que ajudar.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira