FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Append y registro relacionado
Hola a todos/as, tengo el siguiente problema, la aplicación funcionaba correctamente y sin saber por que, me aparece el siguiente mensaje cuando intento realizar un Append sobre una tabla:
"... No se puede agregar o cambiar el registro porque se necesita un registro relacionado en la tabla OBR ..." ¿No se supone que al realizar un Append todos los campos están vacíos y es cuando se realiza el Post el momento en que se evalua la existencia de los datos en las tablas relacionadas?. Hace unas horas no se producía el eror y no se que puede pasar, he compactado y reparado la BD (Access 2000), he realizado el Build del proyecto, he reiniciado, vamos todo lo típico y en Acces al realizar un Append en esa tabla todo funciona correctamente. Espero vuestra ayuda. un saludo. |
#2
|
||||
|
||||
Si has establecido integridad referencial desde Access, ya sabes botón derecho relaciones añades tablas, relacionas, aplicas integridad referencial, actualización en cascada.......
Entonces al dar un alta en la tabla xxxx no te permite si el registro no existe antes en la tabla yyyy. Claro que es una especulación, pero te recomiendo que mires las relaciones que tienes establecidas entre las tablas, incluso si declaraste algún campo búsqueda dentro de Access. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
||||
|
||||
Gracias por responder, las relaciones no las he modificado y como comentas tengo montada la integridad relacional, con actualización y borrado en cascada.
Lo raro es que sin más salte ahora este problema, ya que he verificado que todos los datos son correctos. Pero ¿no te parece extraño que salte ese error cuando solo he realizado el DataSource.DataSet.Append, es decir todavía no he tenido tiempo de rellenar los datos para que me salte ese error y no he realizado el Post. |
#4
|
||||
|
||||
Pues yo hago pruebas y no me salta el error hasta que intento, cambiar de fila o lo que es lo mismo hacer un Post;
AdoTable1.Append; Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#5
|
||||
|
||||
Ya lo tengo Marcos, como suele ocurrir, cuando no sabes lo que pasa, revisalo todo. He mirado línea a línea todo el código y por curioso que resulte, dos líneas más abajo del Append, aparece una asignación incorrecta a un campo, que por supuesto no cumple la integridad referencial. Pero la cuestión es que el error saltaba dos líneas antes del lugar donde se realizaba la asignación incorrecta:
Código:
Comparativo.DataSource1.DataSet.Append; //Obra Comparativo.DataSource1.DataSet.FieldValues['COMP_OBRA'] := codobra; Comparativo.DataSource1.DataSet.FieldValues['COMP_OBRA'] := false; Gracias por todo Marcos. Un saludo. |
#6
|
||||
|
||||
Creo que es probable que lo que ocurra es que tu tabla ya está editando o insertando algún registro, y al llamar a append, el motor primero hace un post sobre el registro actual.
Creo que podes verificarlo facilmente haciendo: Código:
if Comparativo.DataSource1.DataSet.State in dsEditModes Then Begin ShowMessage('Se esta editando el registro'); try Comparativo.DataSource1.DataSet.Post; except ShowMessage('Si es aqui donde peta!'); raise; end; End; Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
|
|