FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
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. |
#5
|
||||
|
||||
Hola,
Cita:
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. |
#6
|
|||
|
|||
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. |
#7
|
||||
|
||||
Hola,
Cita:
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. |
|
|
|