Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 18-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Estás seguro de que no valida?

Lo que yo creo es que el evento OnPostError sí se genera pero no hace nada porque todo el código está rodeado por un condicional que no se cumple:

Código:
if (E is EDBEngineError) then
begin
  { código que no se ejecuta }
end;
El problema es que una excepción EDBEngineError sólo se ejecuta cuando accedes a la base através del BDE pero en tu caso lo haces por medio de ADO. Por tanto la excepción E nunca va a ser del tipo EDBEngineError.

Yo no conozco ADO pero haciendo algunas pruebas observo lo siguiente:

La componente TAdoConnection tiene una propiedad Errors que aparentemente almacena los errores que se generan. Desconozco en qué casos se almacena más de un error pero puedes intentar con el primero: TAdoConnection1.Errors[0].

Cada elemento de este arreglo tiene dos propiedades que pueden servirte:

NativeError y Description

NativeError te puede servir para determinar en el evento OnPostError a qué se debió el error mientras que Description contiene el texto del mensaje de error.

El siguiente código es la prueba que hice:

Código:
const
  E_DB_KEYVIOLATION = -1605;
  E_DB_REQUIREDFIELD = -3701;

procedure TForm1.ADOTable1PostError(
  DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
  case AdoConnection1.Errors.Item[0].NativeError of
    E_DB_KEYVIOLATION:
      raise Exception.Create('La llave se repite amigo');

    E_DB_REQUIREDFIELD:
      raise Exception.Create('Sin valor no hago nada');
  end;
end;
Como dije, no sé gran cosa de ADO pero me parece que esto te puede servir como punto de partida.

// Saludos
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:43:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi