Tratar Erros com Caché
13/02/2004
0
Oi gente,
Utilizo uma rotina simples, mas bem funcional, para tratar erros do Banco de Dados. O meu problema é que minha base de dados era Paradox, agora estou usando caché e essa procedure não funciona mais.
Acho que o único problema é o tipo de drive a que a rotina faz referência, mas ainda não consegui adapta-lá para usar com o projeto que utiliza caché como banco de dados.
Segue a rotina que eu utilizo. Se puderem me ajudar, favor indicar outro código ou reescrever este:
procedure TDM.TrataErro(DataSet: TDataSet, E: EDatabaseError; var Ation: TDataAction);
var
i: byte;
begin
//verifica tipo de erro
case (E as EDBEngineError).Errors[0].ErrorCode of
124://Foreing Key
if DataSet.State in [dsInsert, dsEdit] then
msg:=´Este registro não pode ser salvo,´+
´pois viola as regras de integridade do sistema!´
else
msg:=´Este registro não pode ser excluído pois existem´+
´dados dependentes!´;
119://Key Violation
msg:=´Registro já existe!´;
118://Value Required for Field
begin
for i:=0 to dataset.fieldcount-1 do
if trim(copy(e.message,30,length(e.message)-29))
=dataset.fields[i].fieldname then
msg:=´Valor inválido para o´+
´campo´+dataset.fieldsi].displaylabel;
end
else //outros erros
msg:=´Erro não Previsto. Contate Suporte!´;
//Exibe a msg para o usuário
if msg<>´ ´ then
MessageBox(0,PChar(msg), ´Custos´,mb_OK+mb_IconStop);
Action:=daAbort;
end;
Utilizo uma rotina simples, mas bem funcional, para tratar erros do Banco de Dados. O meu problema é que minha base de dados era Paradox, agora estou usando caché e essa procedure não funciona mais.
Acho que o único problema é o tipo de drive a que a rotina faz referência, mas ainda não consegui adapta-lá para usar com o projeto que utiliza caché como banco de dados.
Segue a rotina que eu utilizo. Se puderem me ajudar, favor indicar outro código ou reescrever este:
procedure TDM.TrataErro(DataSet: TDataSet, E: EDatabaseError; var Ation: TDataAction);
var
i: byte;
begin
//verifica tipo de erro
case (E as EDBEngineError).Errors[0].ErrorCode of
124://Foreing Key
if DataSet.State in [dsInsert, dsEdit] then
msg:=´Este registro não pode ser salvo,´+
´pois viola as regras de integridade do sistema!´
else
msg:=´Este registro não pode ser excluído pois existem´+
´dados dependentes!´;
119://Key Violation
msg:=´Registro já existe!´;
118://Value Required for Field
begin
for i:=0 to dataset.fieldcount-1 do
if trim(copy(e.message,30,length(e.message)-29))
=dataset.fields[i].fieldname then
msg:=´Valor inválido para o´+
´campo´+dataset.fieldsi].displaylabel;
end
else //outros erros
msg:=´Erro não Previsto. Contate Suporte!´;
//Exibe a msg para o usuário
if msg<>´ ´ then
MessageBox(0,PChar(msg), ´Custos´,mb_OK+mb_IconStop);
Action:=daAbort;
end;
Michelle
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)