segunda-feira, 21 de setembro de 2009

Tratando erros no banco de dados

Procedure AppException(Sender: TObject; E: Exception);
...
implementation
...
procedure TChamado.AppException(Sender: TObject; E: Exception);
var j: Integer;
Msg: String;
begin
Warning1.Hide;
if E is EDBEngineError then
begin
with EDBEngineError(E), Errors[0] do
if ErrorCode = 9734 then // Has Details
ShowMessage('Este registro não pode ser removido, outros arquivos precisam dele.')
else
if ErrorCode = 9729 then //11756 then // Key Violation (o nro do codigo está errado)
ShowMessage(Format('Ocorreu um erro no banco de dados: código %d.', [ErrorCode]))
else
if ErrorCode = 11270 then // another .NET file
ShowMessage('Diretório controlado por outro arquivo .NET, verifique configuração do Banco de Dados.')
else
if ErrorCode = 9733 then // Master record missing
ShowMessage('Registro Master não encontrado.')
else
if ErrorCode = 9734 then // Master has details
ShowMessage('Este registro não pode ser removido, ele está sendo usado pelo Fireman.')
else
if ErrorCode = 8708 then // Record/Key deleted
ShowMessage('Este registro foi removido por outro Operador.')
else
if ErrorCode = 10241 then // alredy in use - // Copy usado para pegar o nome do usuário
with Errors[2] do
ShowMessage(Format('Este registro está sendo usado pelo Operador: ''%s''.', [Copy(Message, 7, 20)]))
else // Outros
begin
for j := 0 to ErrorCount -1 do // Loop para pegar todas as linhas das msg de erro
with Errors[j] do
Msg := Msg + Message + #13;
ShowMessage(Format('EDBEngineError %d: %s', [ErrorCode, Msg]))
end
end
else
if E is EConvertError then
begin
with EConvertError(E) do
if Pos('date and time', Message) > 0 then
ShowMessage('Informe uma data e hora válida.')
else
if Pos('is not a valid time', Message) > 0 then
ShowMessage('Informe uma hora válida.')
else
if Pos('is not a valid date', Message) > 0 then
ShowMessage('Informe uma data válida.')
else
Application.ShowException(E);
end
else
Application.ShowException(E);
end; // AppException

Nenhum comentário:

Postar um comentário