Error al ingresar registro relacionado con clave secundaria
-
- Novato
- Mensajes: 10
- Registrado: Dom Sep 25, 2016 5:07 pm
- Contactar:
Error al ingresar registro relacionado con clave secundaria
Hola a todos.
Estoy usando Clarion 6.3 y Firebird 2.5. Tengo una tabla LIBROS con los siguientes campos:
IDLIBRO <- Pk
TITULO
IDAUTOR <- Fk
IDEDITORIAL <- Fk
ANIO
ISBN
Como puede verse tengo 2 claves secundarias que apuntan a una tabla AUTOR y otra EDITORIAL.
El problema viene a la hora de ingresar un registro desde la tabla LIBROS, en la cual el formulario
de la misma tiene asociado un FieldLookupButton para completar el campo desde la tabla (AUTOR y EDITORIAL).
Cuando completo el formulario obtengo el siguiente error:
Record Insert Error
File: LIBROS
Error: Violation of FOREIGN KEY Constraint "LIB_KIDAUTOR" on table "LIBROS"
Foreign key reference target not exist (23000)
Sin embargo si hago un ingreso de datos desde el IBExpert parece funcionar bien.
que puede ocurrir?
Saludos.
Estoy usando Clarion 6.3 y Firebird 2.5. Tengo una tabla LIBROS con los siguientes campos:
IDLIBRO <- Pk
TITULO
IDAUTOR <- Fk
IDEDITORIAL <- Fk
ANIO
ISBN
Como puede verse tengo 2 claves secundarias que apuntan a una tabla AUTOR y otra EDITORIAL.
El problema viene a la hora de ingresar un registro desde la tabla LIBROS, en la cual el formulario
de la misma tiene asociado un FieldLookupButton para completar el campo desde la tabla (AUTOR y EDITORIAL).
Cuando completo el formulario obtengo el siguiente error:
Record Insert Error
File: LIBROS
Error: Violation of FOREIGN KEY Constraint "LIB_KIDAUTOR" on table "LIBROS"
Foreign key reference target not exist (23000)
Sin embargo si hago un ingreso de datos desde el IBExpert parece funcionar bien.
que puede ocurrir?
Saludos.
- Mauricio
- Desarrollador de Clarion
- Mensajes: 1125
- Registrado: Dom Feb 06, 2011 9:34 am
- Ubicación: España
- Contactar:
Re: Error al ingresar registro relacionado con clave secunda
Obviamente no estás seteando correctamente el ID del autor. Chequeaste el valor antes del take completed? Está bien asignado?
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog
www.tdcsoftware.com y www.clarioneros.com/blog
-
- Novato
- Mensajes: 10
- Registrado: Dom Sep 25, 2016 5:07 pm
- Contactar:
Re: Error al ingresar registro relacionado con clave secunda
No se cual puede ser el error, porque si ingreso los datos desde el IBexpert, no hay ningun problema, osea que la relacion entre las tablas pareceria ser correcta, ahora cuando quiero cargar los datos desde clarion aparece ese error, si el campo IDLIBRO, lo seteo como autonumerado, en cuanto llamo al formulario me aparece el error, o sea ni siquiera se abre el formulario, si le quito el autonumerado, se abre el formulario, pero en cuanto termino de completar los datos, aparece el error diciendo que no existen los datos, en la tabla referenciada, cuando en realidad si existen.Mauricio escribió:Obviamente no estás seteando correctamente el ID del autor. Chequeaste el valor antes del take completed? Está bien asignado?
Tabla AUTOR
========
IDAUTOR <- Clave Primaria, Autonumerada
AUTOR
Tabla EDITORIAL
===========
IDEDITORIAL <- Clave Primaria, Autonumerada
EDITORIAL
Tabla LIBROS
=========
IDLIBRO <- Clave Primaria, Autonumerada
TITULO
IDAUTOR <- Clave secundaria
IDEDITORIAL <- Clave secundaria
ANIO
ISBN
No se se, si hubiera algun error de diseño, no tendria que saltar tambien desde el ibexpert?
- Mauricio
- Desarrollador de Clarion
- Mensajes: 1125
- Registrado: Dom Feb 06, 2011 9:34 am
- Ubicación: España
- Contactar:
Re: Error al ingresar registro relacionado con clave secunda
Te has fijado qué valor tienes esos campos antes del takecompleted?
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog
www.tdcsoftware.com y www.clarioneros.com/blog
-
- Novato
- Mensajes: 10
- Registrado: Dom Sep 25, 2016 5:07 pm
- Contactar:
Re: Error al ingresar registro relacionado con clave secunda
Tengo ingresado unos valores de prueba, las tablas AUTOR y EDITORIAL estan previamente cargadas con datos:Mauricio escribió:Te has fijado qué valor tienes esos campos antes del takecompleted?
Tabla AUTOR
========
IDAUTOR (INTEGER) <- Clave Primaria (not null), Autonumerada
AUTOR (VARCHAR)
Tabla EDITORIAL
===========
IDEDITORIAL (INTEGER) <- Clave Primaria (not null), Autonumerada
EDITORIAL (VARCHAR)
Tabla LIBROS
=========
IDLIBRO (INTEGER) <- Clave Primaria (not null), Autonumerada
TITULO (VARCHAR)
IDAUTOR (INTEGER) <- Clave foranea (not null)
IDEDITORIAL (INTEGER) <- Clave Foranea (not null)
ANIO (SMALLINT)
ISBN (VARCHAR)
Como dije anteriormente, si el campo IDLIBRO de la TABLA LIBROS, lo configuro como autonumerado, no puedo ingresar al formulario y me sale el error, si le quito el autonumerado me deja completar el formulario, pero cuando quiero escribir los datos a la tabla, me sale el mismo error. Creo que el error debe estar en clarion, no se si al importar la tabla al diccionario o algo asi, porque ingresando los datos a traves del IBexpert, los ingresa correctamente, no me da ningun error.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
- Mauricio
- Desarrollador de Clarion
- Mensajes: 1125
- Registrado: Dom Feb 06, 2011 9:34 am
- Ubicación: España
- Contactar:
Re: Error al ingresar registro relacionado con clave secunda
Yo no dejo que Clarion autonumere.
En estos casos, habilito el trace y veo qué le está enviando Clarion al motor.
Y antes del TakeCompleted pongo un mensaje que me diga qué valores tienen los campos, para ver si están bien seteados.
En estos casos, habilito el trace y veo qué le está enviando Clarion al motor.
Y antes del TakeCompleted pongo un mensaje que me diga qué valores tienen los campos, para ver si están bien seteados.
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog
www.tdcsoftware.com y www.clarioneros.com/blog
-
- Novato
- Mensajes: 10
- Registrado: Dom Sep 25, 2016 5:07 pm
- Contactar:
Re: Error al ingresar registro relacionado con clave secunda
Le elimine el autonumerado, intente llenar el formulario, y si pasandole el trace, no le esta enviandoMauricio escribió:Yo no dejo que Clarion autonumere.
En estos casos, habilito el trace y veo qué le está enviando Clarion al motor.
Y antes del TakeCompleted pongo un mensaje que me diga qué valores tienen los campos, para ver si están bien seteados.
los datos, esto es lo que arroja:
Código: Seleccionar todo
017F0H(2) 17:27:09.845 Binding ? 1 for input with C type SLONG as INTEGER for Statement 0669FA8H Time Taken:0.00 secs
017F0H(2) 17:27:09.849 Binding ? 2 for input with C type CHAR(NTS) as VARCHAR(100) for Statement 0669FA8H Time Taken:0.00 secs
017F0H(2) 17:27:09.853 Binding ? 3 for input with C type SLONG as INTEGER for Statement 0669FA8H Time Taken:0.00 secs
017F0H(2) 17:27:09.856 Binding ? 4 for input with C type SLONG as INTEGER for Statement 0669FA8H Time Taken:0.00 secs
017F0H(2) 17:27:09.859 Binding ? 5 for input with C type SSHORT as SMALLINT for Statement 0669FA8H Time Taken:0.00 secs
017F0H(2) 17:27:09.862 Binding ? 6 for input with C type CHAR(NTS) as VARCHAR(50) for Statement 0669FA8H Time Taken:0.00 secs
017F0H(2) 17:27:09.866 Executing prepared Statement 0669FA8H
017F0H(2) 17:27:09.869 Error Occurred: 23000 [ODBC Firebird Driver][Firebird]violation of FOREIGN KEY constraint "LIB_KIDDAUTOR" on table "LIBROS"<0AH>Foreign key reference target does not exist
017F0H(2) 17:27:09.870 Time Taken:0.02 secs
017F0H(2) 17:27:09.871 ADD(LIBROS:0343970H) violation of FOREIGN KEY constraint "LIB_KIDDAUTOR" on table "LIBROS"
Foreign key reference target does not exist Time Taken:0.03 secs
017F0H(2) 17:27:09.873 LIB:IDLIBRO: 0
017F0H(2) 17:27:09.874 LIB:TITULO : ''
017F0H(2) 17:27:09.874 LIB:IDAUTOR: 0
017F0H(2) 17:27:09.876 LIB:IDEDITORIAL : 0
017F0H(2) 17:27:09.876 LIB:ANIO : 0
017F0H(2) 17:27:09.877 LIB:ISBN : ''
017F0H(2) 17:27:09.878
- Mauricio
- Desarrollador de Clarion
- Mensajes: 1125
- Registrado: Dom Feb 06, 2011 9:34 am
- Ubicación: España
- Contactar:
Re: Error al ingresar registro relacionado con clave secunda
O lo estás limpiando antes o no lo estás asignando correctamente.
Luego de seleccionarlo, te fijaste que el valor sea el que tiene que ser?
Luego de seleccionarlo, te fijaste que el valor sea el que tiene que ser?
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog
www.tdcsoftware.com y www.clarioneros.com/blog
-
- Novato
- Mensajes: 10
- Registrado: Dom Sep 25, 2016 5:07 pm
- Contactar:
Re: Error al ingresar registro relacionado con clave secunda
Soy muy nuevo en clarion, hay alguna opcion desde el clarion para configurar las relaciones correctamente,Mauricio escribió:O lo estás limpiando antes o no lo estás asignando correctamente.
Luego de seleccionarlo, te fijaste que el valor sea el que tiene que ser?
porque vuelvo a repetir, desde el IBexpert, ingresando datos a las tablas en cuestion no hay ningun problema, pero desde el clarion, no logro hacerlo funcionar, inclusive agregando otra tabla que tenia que utilizar en el programa y en la cual se hace uso de claves foraneas, me da el mismo error, o sea el problema esta cuando quiero cargar datos en tablas relacionadas con claves foraneas desde el clarion, no se si desde el clarion hay alguna forma de configurarlas, o se deben declarar aparte o si por el contrario deberian funcionar sin mas.
- Mauricio
- Desarrollador de Clarion
- Mensajes: 1125
- Registrado: Dom Feb 06, 2011 9:34 am
- Ubicación: España
- Contactar:
Re: Error al ingresar registro relacionado con clave secunda
En Clarion las claves las definís como Restrict Server y no hacen absolutamente nada. Tiene que ser el motor el que se encargue de todo.
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog
www.tdcsoftware.com y www.clarioneros.com/blog
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 37 invitados