OnPostError - ClientDataSet

Delphi

30/09/2003

Tratei o ´onposterror´ assim

Pode-se usar somente o OnPosterror ou é necessário usar o OnRoconcileError

Uso Delphi6 com FireBird
var
Action: TDataAction);

begin

ErroMens := E.Message;

if UPPERCASE(COPY(ErroMens,1,13)) = ´KEY VIOLATION´ then begin
Action := daAbort;
ShowMessage(´Chave duplicada!´);
end;

TBM tentei assim:

var
Action: TDataAction);

begin

ErroMens := E.Message;

if COPY(ErroMens,1,34) = ´violation of PRIMARY or UNIQUE KEY´
KEY VIOLATION´ then begin
Action := daAbort;
ShowMessage(´Chave duplicada!´);
end;



mas está ainda dando o seguinte erro

Agraeço a todos antecipadamente, estou muito contente com a atenção deste Forum..... Afinal estou começando... estou vindo do Clipper


:oops:


Nilson Junior

Nilson Junior

Curtidas 0

Respostas

Nilson Junior

Nilson Junior

30/09/2003

So mais uma coisa udo DBExpress


GOSTEI 0
Everton

Everton

30/09/2003

Tente assim:

begin
if Pos(´KEY VIOLATION´,E.Message) > 0 then
begin
ShowMessage(´Chave duplicada!´);
Action := daAbort;
end;
end;


GOSTEI 0
Adilsond

Adilsond

30/09/2003

Com ADO eu pego o erro da seguinte maneira:

procedure TdtmPrincipal.cdsUsuarioPostError(DataSet: TDataSet; 
E: EDatabaseError; var Action: TDataAction); 
begin 
with EDBClient(E) do 
begin 
if ErrorCode = 9729 then 
MessageDlg(´Usuário já cadastrado.´, mtError, [mbOK], 0) 
else 
MessageDlg(Message, mtError, [mbOK], 0); 
end; 
Action := daAbort; 
end;


Para descobrir qual o exception( no meu caso EDBClient), execute o programa e deixe dar a mensagem do debug, nela consta o tipo do exception. Altere-o se necessário, execute e verifique através do debug qual o valor do ErrorCode.


GOSTEI 0
POSTAR