Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-03-2011
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
identificar un error de clave foranea...

hola amigos una consulta, este es el caso se que los errores de oracle se pueden identificar por su iderror.. ahora tengo una tabla con varios fk.. hay forma de identificar cual de estos fk es el que esta produciendo el error solo con el mensaje de error o algo asi? desde ya muchas gracias
Responder Con Cita
  #2  
Antiguo 23-03-2011
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
tambien me serviria un codigo que me devuelva el nombre de la clave secundaria que no se cumple...
Responder Con Cita
  #3  
Antiguo 24-03-2011
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.233
Poder: 20
ElKurgan Va camino a la fama
Lo normal es poner nombres de restricciones cuando se declaran estas claves y, en general, para cualquier campo que pudiera fallar (campos no nulos, indices únicos, etc.)

Por ejemplo, en mi empresa trabajamos con Oracle y nombramos a las restricciones (constrints) de claves foráneas con el nombre "fk_tabla_campo", para saber al menos que campo clave de que tabla está fallando.

No se si usas firebird o MSSql pero supongo que todas deben permitir dar nombres de contraints de una u otra forma

Saludos
Responder Con Cita
  #4  
Antiguo 24-03-2011
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
El kurgan Gracias por tu respuesta.. Si yo tambien trabajo con oracle y si en la empresa tambien se les da ese nombre con esa nomenclatura fk_campo. Ahora lo que yo quiero hacer es capturar eso con el delphi para luego hacer un
if error = nombre_fk then
begin
accion
end;

el caso es que la ventana con la que estoy trabajando hace una migracion de postgress a oracle con una tabla detalle. El caso es que esta tabla tiene 5 fk.. yo solo necesito que inserte en otra tabla en el caso que esa fkparticular sea la que cause el error de clave, constraint, llave o como esten acostumbrados a llamarlo..
De nuevo gracias y aguardo mas respuestas Bless
Responder Con Cita
  #5  
Antiguo 25-03-2011
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.233
Poder: 20
ElKurgan Va camino a la fama
¿Y que componentes de acceso a datos estás utilizando? Al menos DBExpress devuelve el código de la restricción violada dentro del mensaje de error. Si no es una restricción con nombre suele devolver un nombre del sistema (ojo, sigo hablando de oracle), como por ejemplo "SYS_C00xxxxxx".

Tendrías que capturar la excepción con un try..except y luego obtener el texto buscando dentro del mensaje de error (por ejemplo, con la función "Pos".)

No se, seguro que hay otras formas más elegantes, pero asi, a bote pronto, es lo primero que se me ocurre.

Saludos
Responder Con Cita
  #6  
Antiguo 25-03-2011
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
si... estaba pensando tambien en eso antes, pero no queria hacer eso por que hiba a ser mas lindo si habia una funcion primitiva de Delphi, pero al parecer no existe cuateto de dbxpress uso... y bue... Muchisimas gracias enserio! sos lo mas.. ahora vere que onda..

LARGA VIDA A DELPHI!
Responder Con Cita
Respuesta



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
Campo puede ser clave foranea de dos tabla richy08 Conexión con bases de datos 4 26-01-2010 18:38:54
problema al crear clave foranea anubis Firebird e Interbase 4 28-06-2008 16:24:49
Saber a quien se refiere una clave foránea Cecil Conexión con bases de datos 2 27-09-2007 19:17:50
Extraer datos de una pagina en java que tiene clave (sabiendo la clave claro) ;) kalimocho Internet 2 29-06-2005 05:11:24
Problema con referencia foranea ! erickperez6 Firebird e Interbase 10 12-05-2003 17:52:21


La franja horaria es GMT +2. Ahora son las 01:04:03.


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