Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error de integridad referencial (https://www.clubdelphi.com/foros/showthread.php?t=60898)

Palmiro 17-10-2008 12:53:14

Error de integridad referencial
 
Hola amigos del foro....Estoy necesitando de su ayuda.

Estoy haciendo una aplicacion que se conecta a mysql(INNOBD), puesta en un servidor linux y las aplicaciones clientes estan en windows.
La conexion se estable por odbc con ADO y trabajo con ADODataSet.

He aqui el problema...
Cuando estoy haciendo in Insert en una tabla que esta relacionada con otra. Despues de hacer el Post, sale el error de que nose puede establecer la integridad referencial. Siendo esta bien referenciada con los datos.
He probado dar de alta con otra administradores de mysql, osea desde afuera de mi aplicación y no he tenido drama en dar de alta.

Espero que me hallan entendido lo que les comente...
Si alguien se ha encontrado con este problema y sabe la solucion o si alguien se da cuenta que me estoy pasando por alto por favor, no tarden en decirlo...

Desde ya muchas gracias.... estare espereando su respuesta....

enecumene 17-10-2008 13:45:26

Hola, actualiza el controlador ODBC de MySQL tal vez se resuelva el problema.

Saludos.

Palmiro 17-10-2008 13:54:44

Gracias por la respuesta, pero el controlador no es, ya que esta instalado el ultimo que esta en la pagina de mysql (versión 5.1.5)
Ademas como comente anteriormente la aplicacion de administracion de mysql se conecta con el mismo conector y no hay drama...

poliburro 17-10-2008 17:36:29

Ok prueba lo siguiente

los campos que tengan llaves foráneas verifica que el valor que insertas exista en las tablas maestro.

has una inserción cuidando eso. y nos comentas el resultado. Saludos

Palmiro 17-10-2008 22:49:30

Hola poliburro.
He probado miles de veces y no logro dar con el problema.
Como escribi anteriormente. Desde la aplicacion no me deje insertar un nuevo registro que contenga claves o compos foraneos.
Hice lo siguiente...
Hice un alta desde Access y no tuve problemas. Tambien probe con RapidSQL (de la empresa Embarcadero soft) y tampoco hubo problema.
Revise una por una las consultas y la forma en que lo estoy haciendo, y no puedo hacer con el problemas...

Te doy mas detalle.... tengo por ej. una tabla persona, la cual se especializa en contratados y de planta, osea 3 tablas
para poder hacer un alta en contratados debe existir primero en persona.
En persona esta dada de alta un fulano. No deberia haber problema de ponerlo como contratado a fulano.
Pero al tratar de hacer, no me deja ya que me dice que hay error de integridad referencial....y la verdad me esta volviendo loco esto...

Si le sirve para ayudarme....
el codigo para el alta es

Código Delphi [-]
 
dsConstrado.DataSet.Insert;
frmContratado.ShowModal;
Una ves que se rellenaron los campos solicitados...

desde el formulario contradados
un boton con comandos

Código Delphi [-]
 
frmGestionContratado.dsPersona.DataSer.Post;
Close;

Luego Channnnn ERRRRROOOORR!!!!

enecumene 17-10-2008 22:56:16

Hola me imagino que el último código es un error tipográfico ¿no?, ¿verificaste que las claves foráneas tengan el valor Cascade en On Update y On Delete?.

Saludos.

Palmiro 17-10-2008 23:19:50

Si es error un error en tipeado...
Cuando me di cuenta ya esta la respuesta... perdon

Si estan las claves foráneas con Cascade en On Update.

Palmiro 20-10-2008 13:03:43

amigos del foro aca les dejo el error, que me da cuando intento hacer un alta

Código Delphi [-]
 
Project Synapse.exe raised exception class EoleException with messge '[MySQL][ODBC 5,1 Driver][mysql-5.0.51a-12]Cannot add or update a child row: a foreign key constraint fails (`synapse/contratado`,CONSTRAINT `Refpersona46` FOREIGN KEY(`genero`,`dni`) REFERENCES `persona` (`genero`,`dni`) ON DELETE ON UPDATE CASCADE)'

Ya nose por donde mas mirar...
la verdad que nose que estoy haciendo mal...

Palmiro 20-10-2008 13:27:47

amigos... asunto solucionado... estaba mal mi consulta...
gracias por su respuestas...
hasta pronto :D

enecumene 20-10-2008 13:34:10

EDITADO: Borrado por tardarme demasiado en contestar :p


La franja horaria es GMT +2. Ahora son las 05:21:31.

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