![]() |
![]() |
| 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
|
|||
|
|||
|
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. |
|
#2
|
|||
|
|||
|
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:
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. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|