Ver Mensaje Individual
  #4  
Antiguo 07-06-2005
axelbb axelbb is offline
Miembro
 
Registrado: oct 2004
Posts: 127
Reputación: 20
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