FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Como capturar mensaje cuando se intenta duplicar una clave primaria de una BD
Quisiera saber si hay alguna forma de capturar el mensaje de error que manda la base de datos cuando se intenta duplicar el valor de una llave primaria, esto es para mostrarle un mensaje personalizado al usuario de la aplicacion en lugar del que mande el sistema.
Les agradezco su ayuda de antemano. |
#2
|
||||
|
||||
¿Qué base de datos?
|
#3
|
|||
|
|||
Es SQL Server 2008
|
#4
|
||||
|
||||
Porque no creas una función para saber si existe tal dato en la tabla, no creo que sea buena idea que la base de datos te devuelva un error de la existencia de dicho dato.
un saludo. |
#5
|
||||
|
||||
¿Cómo estás accediendo? ¿ADO, DBExpress?
Utiliza un Try..Except y captura el mensaje de vuelta. Segun la clase podrás acceder al código o en su defecto al mensaje; A partir de ahí podrás personalizar el mensaje:
Esto es más o menos lo que puedes utilizar para ADO; Para DbExpress algo similar.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#6
|
|||
|
|||
Es que la base de datos sola me devuelve ese error cuando intento duplicar una llave primaria lo que deseo es interceptarlo para que yo muestre mi propio mensaje, no me convence lo de crear una funcion tendria que estar llamando a la funcion cada vez que agrego un registro cuando la base de datos ya te da el mensaje.
|
#7
|
||||
|
||||
Cita:
Con una función de verificación no hay garantía de que, entre la llamada a la función y el envío de los datos, otro programa o usuario ocupe el valor que no se quiere duplicar. Una solución como la de Neftali me parece la más adecuada (o usar el evento OnReconcileError en caso de que RedVenom esté utilizando objetos TClientDataSet). Esperemos a ver qué nos dice. Saludos. |
#8
|
||||
|
||||
Cita:
Correcto. Muy correcto. Primero porque estaremos haciendo trabajo doble. Segundo porque si ya hay alguien que saber hacer ese trabajo, mejor que lo haga él (SGBD). Tercero, porque los métodos de hacerlo del SGDB son mucho más eficientes que hacerlo desde el cliente (delphi). Cuarto, porque hacerlo nosotros no es tan sencillo como parece, por los temas de concurrencia que comenta Al.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cuando elegir una particion primaria y cuando una extendida o logica | JoAnCa | Varios | 1 | 17-05-2008 23:35:43 |
Mensaje para no duplicar la clave primaria de la base de datos | ivansito | PHP | 8 | 08-08-2007 00:53:51 |
Como copiar un registro cambiando el campo de clave primaria | Javi2 | SQL | 2 | 17-09-2004 20:49:50 |
cambiar la clave primaria con SQL | User_Baja_2 | SQL | 8 | 18-06-2004 08:41:31 |
cambiar una clave primaria | User_Baja_2 | SQL | 3 | 06-10-2003 18:03:38 |
|