![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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! |
#2
|
||||
|
||||
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!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. ![]() |
#3
|
|||
|
|||
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! |
#4
|
||||
|
||||
Otra ves, desconociendo como es que modificas los datos... En el DataSet que haces el Post...¿Haces un AppliUpdates?
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. ![]() |
#5
|
|||
|
|||
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). |
![]() |
|
|
![]() |
|