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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-08-2006
Avatar de acastillo
acastillo acastillo is offline
Registrado
 
Registrado: ago 2006
Posts: 4
Poder: 0
acastillo Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 04-09-2006
avmm2004 avmm2004 is offline
Miembro
 
Registrado: jun 2006
Ubicación: Santa cruz de Tenerife, Islas Canarias
Posts: 500
Poder: 21
avmm2004 Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 04-09-2006
Avatar de acastillo
acastillo acastillo is offline
Registrado
 
Registrado: ago 2006
Posts: 4
Poder: 0
acastillo Va por buen camino
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
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


La franja horaria es GMT +2. Ahora son las 00:54:05.


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