Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2005
axelbb axelbb is offline
Miembro
 
Registrado: oct 2004
Posts: 127
Poder: 22
axelbb Va por buen camino
Veamos

Creo que lo que Oracle te dice es que insertás un registro en TARJETAS con un código de usuario que no existe en la tabla USUARIOS. Eso sería la violación de clave foránea. La clave nula no tiene por qué ser rechazada con ese mensaje, porque no hace referencia a ninguna otra tabla.

Desde el dbExplorer, le mandás un SQL con los valores a insertar (codigo de usuario, clave nula), y lo acepta bien porque el codigo de usuario (parámetro 1) existe en USUARIOS.

EL SQL de insert en el componente Delphi sería:

insert into TARJETAS values (:Param0,:Param1) o algo así

En Delphi, PARAMS empieza desde 0:

Query1.Params[0].AsInteger := CODIGO DE USUARIO
Query1.Params[1].AsString := Nil (o Params[1].CLEAR ??, no sé)

Otra es usar un SQL especial para cuando la tarjeta no está configurada:
insert into TARJETAS values (:Param0,NULL) (En Oracle es NULL?)
y
Query1.Params[0].AsInteger := CODIGO DE USUARIO

Por supuesto, el orden de los campos en la tabla y en la instrucción debe ser idéntico, y no debería saltar ningún error, y todos los Params y parámetros directos de la instrucción SQL deben tener valor asignado.

No entiendo mucho de esto, si nada que ver, mil disculpas.

Saludos.
Responder Con Cita
  #2  
Antiguo 07-06-2005
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 24
ramiretor Va por buen camino
A ver

Hola a todos:
Lo que está pasando es que DBExplorer (que es la herramienta con la que el amigo está insertando el registro) no está respetando los constraints, en este caso, la llave foránea, este constraint está para que se respete la integridad referencial entre tablas, si se quiere insertar el registro a la mala, es decir, no respetar el constraint (la llave foránea pues) lo que se tiene que hacer es deshabilitarlo, pero cuidado que eso puede traer problemas más adelante, si no mal recuerdo la sentencia es:

Código SQL [-]
  alter table "Mitabla" modify constraint "nombreConstraint" disable;

y luego insertar el registro y seguir por último habilitando el constraint (pero a mi se me hace que no va a poder levantarlo). En el dado caso ¿por qué no usas un valor - 1 (por ejemplo) en la llave foránea? para que sepas que se trata de registros con esas características

Saludos
__________________
Ernesto R.

Última edición por ramiretor fecha: 07-06-2005 a las 19:15:06.
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 13:33:01.


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