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)
-   -   insertar en tablas maestro detalle (https://www.clubdelphi.com/foros/showthread.php?t=4728)

mnorza 23-10-2003 19:24:22

insertar en tablas maestro detalle
 
Hola amigos:
Pretendo insertar registros en una tabla maestro si en la tabla detalles no hubo excepciones, es decir, quiero que la transaccion se confirme hasta que la detalle no tenga problema y si tiene problemas pues no insertar nada en la tabla maestro.
Desde ya, gracias por su ayuda.

kinobi 23-10-2003 19:57:09

Hola,

Mantén todas las operaciones (contra la tabla maestra y la de detalle) dentro de la misma transacción. Si al final todo fue bien --> Commit, si hubo problemas --> Rollback.

Saludos.

mnorza 24-10-2003 17:58:40

Hola:
Ya hice lo que me sugeriste, sin embargo al momento de insertar los registros de la tabla detalle el sistema se queda esperando y no hace nada. La tabla maestro desde luego que tiene una relacion con la detalle de uno a muchos. Tal vez al insertar los registros en la tabla detalle esta espera que antes se haya confirmado la transaccion en la maestro para poder insertar sus registros. Bien pues espero me puedas ayudar nuevamente, desde ya, gracias. :(

mnorza 24-10-2003 18:36:40

Hola:
Ya hice lo que me sugeriste, sin embargo solo funciona si quito en el manejador de base de datos la relacion que verifica que el registro que se esta insertando en la detalle se encuentre en la maestro y yo quisiera conservar esta relacion. De antemano gracias por tu ayuda. :(

kinobi 24-10-2003 19:34:47

Hola,

Cita:

Posteado originalmente por mnorza
Ya hice lo que me sugeriste, sin embargo al momento de insertar los registros de la tabla detalle el sistema se queda esperando y no hace nada.
lo siento, no entiendo qué quieres decir con: "se queda esperando y no hace nada".

Para no ir a ciegas convendría que dieses más datos: servidor (InterBase, Firebird, ...), versión (del servidor y del cliente); si el problema aparece desde una aplicación cliente (supongo que escrita Delphi o C++Builder): componentes de acceso utilizados y un pequeño ejemplo del código donde está el problema.

Saludos.

mnorza 25-10-2003 01:32:21

Bien:
El servidro es SQL Server 2000, estoy utilizando el BDE de Delphi 6.
Mi codigo es mas o menos el siguiente

Comienza la insercion de registros:

datamodule1.Dtabase.StartTransaction;
try
datamodule1.UpdSQLRegPed.Query[ukinsert].ParamByName('id_pedimen').AsString :=txtnumped.Text;
.
.
.
etc
datamodule1.UpdSQLRegPed.ExecSQL(ukinsert);

///El codigo anterior es para escribir en la tabla maestro acto seguido:

El codigo para la tabla detalle es similar al anterior.
Si no se levanta ninguna excepcion pues le doy
COMMIT;
si se levanta alguna:
except
datamodule1.Dtabase.Rollback;

Todo lo anterior esta bien hasta la insercion en la maestro pero cuando trato de insertar el primer registro en la tabla detalle ya no muestra el cursor del debuger, se pierde, es cuando te comentaba que si no estara esperando que se confirme la insercion en la tabla maestro para que la detalle pueda insertarse.
Ahora la nueva es que quite en el servidor la regla de validacion maestro/detalle para inserciones, es decir, el servidor verifica que el registro que inserte en la detalle este en la maestro primeramente, bueno pues esta regla la quite y ahora corro el programa y tu sugerencia funciona correctamente. Ahora mi pregunta es si se puede mantener la regla que te comente en lineas anteriores ya que me es de utilidad.
De nuevo gracias.

kinobi 25-10-2003 02:28:19

Hola,

Cita:

Posteado originalmente por mnorza
El servidro es SQL Server 2000, estoy utilizando el BDE de Delphi 6.
¿y qué hace una consulta de SQL-Server 2000 en el foro de "InterBase y Firebird"? :?

Bueno, como no tengo claro donde está el problema (en el servidor o en el cliente), ya que yo no trabajo con SQL-Server, te muevo el hilo a "Conexión con bases de datos".

Saludos.

P.D. Veo que eres nuevo por estos foros, así que te aconsejo la lectura de la Guía de estilo de los foros, y la recomendación de ubicar tus mensajes en el foro adecuado. En éste ("InterBase y Firebird"), como comprenderás, tu mensaje está fuera de tema.


La franja horaria es GMT +2. Ahora son las 02:58:08.

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