Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-06-2007
ghuttemann ghuttemann is offline
Registrado
 
Registrado: mar 2007
Ubicación: Asunción, Paraguay
Posts: 2
Poder: 0
ghuttemann Va por buen camino
Exclamation Captura y "traducción" de errores

Desarrollo aplicaciones con Delphi y los gestores de base de datos Firebird y PostgreSQL.

El problema que tengo que solucionar es desplegar mensajes de error apropiados, cuando el error se produce del lado servidor, es decir, en la base de datos.

Básicamente, los errores que debería manejar son los siguientes:
  1. Violación de clave foránea, al eliminar o editar algún registro.
  2. Violación de clave primaria (o única).
  3. Violación de campos requeridos (campos NOT NULL).
Estuve considerando varias opciones para solucionar este problema; los cito a continuación, especificando sus inconvenientes asociados:
  1. Utilizar la propiedad Required de los TField de un TDataSet, de manera a poder realizar el control de campos requeridos del lado cliente. El inconveniente con esto es que dicha propiedad nada tiene que ver con la restricción del campo en la base de datos, si cambia un campo de la base, es decir, si deja de ser o se vuelve requerido, habría que cambiar eso también en la aplicación y recompilarla.
  2. Capturar el código de error ocurrido en la base de datos y mapearlo a un mensaje apropiado según el significado del mismo. El inconveniente con esto es que no funciona con PostgreSQL, sí con Interbase o Firebird. Talvez haya otros gestores con los que tampoco funcione. En fin, no es una solución general.
  3. Crear triggers que verifiquen los tres tipo de violaciones mencionados más arriba y de acuerdo al caso lanzar una excepción con un mensaje correspondiente, que sea entendible por el usuario común. Al parecer esta es la opción más general pero a la vez más trabajosa, tampoco es muy portable si llegásemos a cambiar de gestor, pero por lo menos dejamos el control solo de un lado (el del gestor).
Será que existe algún mecanismo conocido por Ustedes que pueda ayudarme a solucionar este problema. Qué pueden decir al respecto.

Desde ya muchas gracias.
Responder Con Cita
 



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
Comentario "aplastante" contra los que atacan la "piratería" Casimiro Notevi La Taberna 12 07-03-2010 14:03:02
error: "La operacion de multiples pasos OLE DB genero errores" gabriella MS SQL Server 3 16-08-2007 12:51:31
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53
Ventana MDI, "Siempre visible" y "Pantalla completa" ixMike API de Windows 7 11-04-2007 18:36:55
Traducción del mensaje "Field value required" menfis Conexión con bases de datos 1 18-02-2005 11:43:03


La franja horaria es GMT +2. Ahora son las 14:43:16.


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