Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-03-2010
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 22
movorack Va camino a la famamovorack Va camino a la fama
googleando... me encontré con un link que me remitia nuevamente al club... aquí está el post, podria ser de ayuda.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #2  
Antiguo 24-03-2010
bothy bothy is offline
Miembro
 
Registrado: ene 2010
Posts: 144
Poder: 17
bothy Va por buen camino
hola de nuevo amigos
quisiera saver cómo detectar o saber por ejemplo la excepción del gestor de base de datos "Violation of UNIQUE KEY constraint XXXXX", "Cannot insert the value NULL into column YYYYY" o "INSERT statement conflicted with COLUMN FOREIGN KEY constraint" para cuando se presente mostrarle al usuario lo siguiente:


-"Cannot insert the value NULL into column YYYYY" = No puede insertar nulo en el campo xxx

-"Violation of UNIQUE KEY constraint XXXXX" = Registro duplicado

-"INSERT statement conflicted with COLUMN FOREIGN KEY constraint" = Referencia no existe.

Es decir atendiendo al error que me devuelva el gestor de base de datos mostraré mi mensaje personalizado. utilizo firebird e IBExpert
Responder Con Cita
  #3  
Antiguo 24-03-2010
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 23
defcon1_es Va por buen camino
Defines un procedimiento para el tratamiento de errores y lo usas donde consideres oportuno, ej: evento OnPostError de los DataSet, al abrirlos, etc.


Código Delphi [-]
//Este lo puedes llamar desde el evento OnPostError de tus DataSets
procedure ErrorEnPost(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
  Action := daAbort;
  DataSet.Cancel;
  ErrorBaseDatos(E);
end;

// Este es el "genérico"
procedure ErrorBaseDatos(E: EDatabaseError);
begin
    if E is EIBInterBaseError
    then begin
      case EIBInterBaseError(E).IBErrorCode of
        $14000019: AvisoError('Aviso', 'Coincidencia en el uso del registro.' +#13+
                                       'Otro usuario lo tiene en uso.' +#13+
                                       'Inténtelo de nuevo.    -No es un error-'+#13+
                                       '---------------------------------------'+#13+
                                       'Error/Excepción FireBird: (' + E.Message + ')');
        $14000159: AvisoError('Aviso', 'Clave primaria duplicada.' +#13+
                                       'Ya existe un registro igual al selecionado (con el mismo ID).'+#13+
                                       'Intente esta operación de nuevo.    -No es un error-'+#13+
                                       '---------------------------------------'+#13+
                                       'Error/Excepción FireBird: (' + E.Message + ')');
        $14000037: AvisoError('No hay acceso a la Base de Datos',
                              'La base de datos no existe o '+#13#10+
                              'el servidor de FireBird está desactivado.'+#13+
                              '---------------------------------------'+#13+
                              'Error/Excepción FireBird: ' + E.Message);
        $140001A5: AvisoError('Se ha perdido la conexión con el servidor de FireBird',
                              'Se perdió la conexión con el servidor de FireBird.'+#13#10+
                              'Revise el equipo Servidor y compruebe que tiene'+#13#10+
                              'activo el servidor de FireBird. (Panel de Control/FireBird Server Manager)'+#13+
                              '---------------------------------------'+#13+
                              'Error/Excepción FireBird: ' + E.Message);
        $14000018: AvisoError('Error al abrir la Base de Datos',
                              'El sistema no puede hallar la Base de Datos especificada.'+#13#10+
                              'Compruebe que la ruta es correcta, el fichero existe'+#13#10+
                              'y el usuario tiene permisos de acceso.'+#13+
                              'Se cerrará la aplicación.'+#13+
                              '---------------------------------------'+#13+
                              'Error/Excepción FireBird: ' + E.Message);
        $14000191: AvisoError('No hay acceso al equipo servidor',
                              'No se ha podido establecer conexión ya que el equipo'+#13#10+
                              'de destino ha denegado activamente dicha conexión.'+#13#10+
                              'Compruebe el estado de su red y sus permisos dentro de la misma.'+#13+
                              '---------------------------------------'+#13+
                              'Error/Excepción FireBird: ' + E.Message);
        else Aviso('Error/Excepción FireBird: '+IntToStr(EIBInterBaseError(E).IBErrorCode)+#13#10#13#10+E.Message);
      end;
      SysUtils.Abort;
    end
    else ErrorNoBaseDatos(Exception(E));
  end;
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #4  
Antiguo 24-03-2010
bothy bothy is offline
Miembro
 
Registrado: ene 2010
Posts: 144
Poder: 17
bothy Va por buen camino
hola defcon1_es
hice lo que me pusiste en post agregue ala seccion uses "ib" para que no me marcara error el EIBInterBaseError pero noce porque me marca error en la linea
Código Delphi [-]
procedure TFromAutores.ClientDataSet1PostError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
  Action := daAbort;
  clientdataset1.Cancel   ;
  //aqui el error
 ErrorBaseDatos(E);

end;
y tambien me marca error en todos los "AvisoError" y "aviso"
gracias por la yuda amigo..
Responder Con Cita
  #5  
Antiguo 25-03-2010
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 23
defcon1_es Va por buen camino
Prueba a cambiar clientdataset1.Cancel por DataSet.Cancel;

Las funciones AvisoError y Aviso son de ejemplo, puedes cambiarlas por ShowMessage o similar.
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #6  
Antiguo 25-03-2010
bothy bothy is offline
Miembro
 
Registrado: ene 2010
Posts: 144
Poder: 17
bothy Va por buen camino
Cita:
Empezado por defcon1_es Ver Mensaje
Prueba a cambiar clientdataset1.Cancel por DataSet.Cancel;

Las funciones AvisoError y Aviso son de ejemplo, puedes cambiarlas por ShowMessage o similar.
hola de nuevo y gracias por ayudarme
cambie el dataset.cancel por el clientdataset.cancel y los avisos por showmessage pero en los mensages me marcaba error las comas asi que le puse el "+" y despues me marco error en
Código Delphi [-]
   else ErrorNoBaseDatos(Exception(E));
undeclaret identifier sale el error..
Responder Con Cita
  #7  
Antiguo 26-03-2010
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 23
defcon1_es Va por buen camino
Fijate que el procedimiento ErrorBaseDatos espera como parámetro un objeto de la clase EDataBaseError, no de la clase Exception, por lo que no puedes hacer
Código Delphi [-]
else ErrorNoBaseDatos(Exception(E));

Sino que debes hacer la llamada asi:

Código Delphi [-]
else ErrorNoBaseDatos(E);
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
Respuesta


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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
cambiar la clave de firebird desde delphi ingabraham Varios 1 06-02-2010 18:19:28
Como cambiar los atributos de un archivo con mi programa delphi JoAnCa Varios 2 23-07-2008 17:52:16
como puedo cambiar la fuente de Delphi - tipo de letra micky mouse Varios 6 07-03-2008 02:26:12
Como cambiar la condicion de un Group en FastReport desde Delphi 5 eljavi Varios 9 23-02-2007 20:08:54
mensages en red Jordy Varios 5 09-06-2005 22:20:31


La franja horaria es GMT +2. Ahora son las 12:08:51.


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