![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Como capturar errores personalizados de Ms SQL desde un TQuery
A proposito del manejo de errores del motor, yo trabajo con Ms SQL Server 2000 y Delphi 7, por diseño de la aplicación, hay muchos procedimientos que se ejecutan en el lado del servidor y me regresan mensajes o errores personalizados a traves de RAISERROR (como "Excedería el límite de crédito").
Lo que me gustaría hacer, es capturar el mensaje exactamente como me lo manda Ms SQL, y formatearlo para mostrarlo en un messagebox mas amigable que el que sale por defecto... lo mismo para el manejo de los foreing key. Ya intenté interceptar el error en OnUpDateError, sin embargo el errorcode y el message, corresponden a la lista de errores del BDE y no es lo que me está mandando el MsSQL. La pregunta concreta es: ¿Hay alguna variable como E.Message pero que me traiga el error de Ms SQL y no del BDE? Alguna idea? De antemano, muchas gracias |
|
#2
|
|||
|
|||
|
Realmente no se si he entendido lo que dices pero....
Si quieres borrar un registro de una tabla maestra y tiene registros asociados en una tabla de detalle (es decir una foreign key) yo que tu utilizaria en la clave - on delete cascade - para que ademas me borre el detalle al borrar el maestro y mediante trigers de la base de datos en el before delete del detalle haria lo que tuviera que hacer con cada linea de detalle (¿ acumular / restar totales .........). Esto requiere un mensaje crítico de cara al usuario (ejemplo de cabecera de facturas con lineas de factura) respecto a lo que va a pasar y que lo confirme. De esta manera te aseguras de no dejar lineas de detalle sin maestro. Todo esto presuponiendo que utilizas una base de datos relacional (oracle, sql server, interbase, ....), no ficheros planos. (paradox, .....) Veo logico que si el cliente quiere borrar ¿una factura ? no le de el latazo diciendole que la factura tiene lineas y que no la puede borrar o le de un mensaje ¿criptico ?. Espero haberte ayudado, aunque no se si era eso lo que tu preguntabas realmente. |
|
#3
|
||||
|
||||
|
No amigo, creo que no me explique bien.
En mi mensaje dice que uso Ms SQL 2000 (Base de datos relacional), y la pregunta no es como borrar tablas relacionadas, sin embargo si dice literalmente: La pregunta concreta es: ¿Hay alguna variable como E.Message pero que me traiga el error de Ms SQL y no del BDE? Puse el ejemlo del foreing key, únicamente porque cuando ocurre esto, SQL manda el error 176X con un mensaje determinado, pero en e.message se recibe un error (creo) 9000 que viene del BDE y obviamente la descripción no concuerda Saludos y de cualquier forma, muchas gracias por tu respuesta |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|