Array
(
)

On Post Error. Banco Fb 1.5

Lafitti
   - 13 set 2004

Prezados Amigos,
Estou fazendo um projeto no Delphi6 com Banco de Dados Firebird 1.5, criei um tabela com os seguintes campos:

#Código

CREATE TABLE USUARIOS
(
CODIGO INTEGER NOT NULL,
NOME VARCHAR(30),
FUNCAO VARCHAR(30),
SUPERVISOR CHAR(1),
SENHA VARCHAR(8),
PRIMARY KEY (CODIGO)
);

Coloquei no evento OnPostError do Componente ClientDataSet do DataModule:

procedure TDMTiTan.CDSUsuariosPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
If UpperCase (Copy(e.Message,1,13))=´KEY VIOLATION´ then
begin
Action:= DaAbort;
Showmessage(´Já existe Usuário com este código - Favor corrigir!´);
end;
end;

Isso para que não o erro erro de Key Violation, mas o problema persiste pois, quando eu tento gravar em execução em tempo de projeto e me envia outra mensagem:

Project TiTan.exe raised exception class EDatabaseError with message ´violation of PRIMARY or UNIQUE KEY constraint "INTEG_12" on table "USUARIOS"
´.Process stopped. Use Step or Run to continue.

No evento do botao gravar:

procedure TFormUsuarios.btnGravaClick(Sender: TObject);
begin
If DMTiTan.CDSUsuarios.FieldByName(´senha´).AsString = edit1.Text then
begin
BtnIncluir.Enabled:=true;
BtnAlterar.Enabled:=true;
BtnCancelar.Enabled:=false;
btnGrava.Enabled:=false;
BtnExcluir.Enabled:=true;
BtnConsUsuarios.Enabled:=true;
DBNavigator1.Enabled:=true;
BtnSair.Enabled:=true;
DMTiTan.CDSUsuarios.ApplyUpdates(-1);
end
Else
begin
ShowMessage(´Senha não confere com confirmação da Senha - Redigite-os!´);
DBEdit5.SetFocus;
end;
end;


Gostaria da colaboração dos Colegas para a solução simples que estou com dificuldades, como corrigir este problema?


Nelson_prog
   - 14 set 2004

Faça a validação no evento OnReconcileError do ClienteDataset:

procedure TForm1.ClientDataSet1ReconcileError(DataSet: TClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
Action := HandleReconcileError(DataSet, UpdateKind, E);
end;