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)
-   -   tablas relacionadas y update sql (https://www.clubdelphi.com/foros/showthread.php?t=2627)

joanajj 31-07-2003 11:27:12

tablas relacionadas y update sql
 
Buenos días, tengo dos consultas:
(no estoy muy seguro de si se pueden hacer dos preguntas juntas, si no fuera así, corregidme y disculpas)

1º) Establezco uns relación entre dos tablas(maestro-detalle) y todo bien hasta que intento escribir datos en ellas. Me da este error:

'No existe campo relacionado en la tabla cabecera', y lo raro es que sí he hecho esa relación. Si quito la relación todo funciona, pero necesito hacer relación de integridad.

2º) Al hacer un update en sql(en una tabla maestro/detalle) no se reflejan los cambios hasta que no cierro y abro la tabla. ¿Sabe alguién como puedo evitar abrir y cerrar la tabla?



¡Saludos!

delphi.com.ar 31-07-2003 15:29:35

Primero te quiero comentar que lo que te voy a decir son suposiciones, ya que no aclaras bien que motor utilizas y como accedes a este:
- El primer error, a mi parecer estas haciendo las cosas al revés, estás queriendo insertar primero en el detalle y luego en la cabecera, y esto obviamente produce una violación a una relación.
- Con el segundo tema, si es que no manejas transacciones, se supone que con la misma conexión verás los cambios. De todos modos te recomiendo que eches una mirada la manejo de transacciones de los TDataBase.

Saludos!

joanajj 01-08-2003 11:14:31

Buenos días, ya se solucionó el primero de los problemas. Efectivamente estaba grabando primero en la tabla detalle, y no en la maestro como tenía que haber sido.

El segundo problema continua, amplío:

Usando ADO intento grabar en la tabla maestro y en la detalle. Por razones de código en la maestro escribo de forma directa:

modulo.cabeceraalbar.value:=........;
modulo.cabecera.post;

y seguidamente escribo en la detalle mediante sql:

update...... where......

El problema es: los datos se graban, pero en la tabla detalle(que es donde grabo con sql) los datos no los veo hasta que no cierro y abro la tabla de nuevo, en cambio en la maestro si que los veo.

¿Sabéis cual es la posible causa?, he probado con transacciones y no varía en nada(si es que lo he hecho bien)...


¡saludos!

delphi.com.ar 01-08-2003 22:47:49

Otra ves, desconociendo como es que modificas los datos... En el DataSet que haces el Post...¿Haces un AppliUpdates?

Saludos!

joanajj 05-08-2003 13:17:23

Posiblemente no he conseguido explicarme bien.
Los datos los modifico con un commandsql al que le paso
en el commandtxt :

'update tabla set columna:=1200 where factura:=1000' algo así, no recuerdo bien(no tengo el source delante)

después hago , commandsql.execute;

Con esto los datos de modifican, pero no veo los cambios hasta que no cierro y abro la tabla. Uso ADO, y el método appliupdates no existe en ADO(o por lo menos yo no lo veo).

A ver si así lo he aclarado algo más.

Muchas gracias, y siento mi pesadez(pero es un rollo tener que cerrar y abri la bd, ya que cuando hay muchos datos se ralentiza).


La franja horaria es GMT +2. Ahora son las 07:48:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi