FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Guardar Maestro-Detalle (Problema super comun)
Saludos cordiales.
Estuve buscando bastante sobre este tema en el foro sobre mi problema pero no encontre respuestas, solo preguntas . Bueno el problema que tengo es el siguiente, tengo dos tablas en mi base de datos hecha en Firebird, las tablas tienen masomenos la sigiente estructura Tabla: Ingreso - Campos: ID(Llave Primaria), FECHA, COMENTARIO, PROVEEDOR, ALMACEN Tabla: Ingreso_Detalles - Campos: ID(Llave Primaria), ID_INGRESO(Llave Foraena), ID_PRODUCTO, PRECIO, CANTIDAD La relacion es 1-n Ahora el campo ID de la tabla Ingreso lo necesito para la tabla Ingreso_Detalles en el campo ID_INGRESO. Lo que hago es lo siguiente: Primero en el formulario en el evento onshow pongo lo siguiente IBIngresos.Close; IBIngresos.Open; IBIngresos.Append; //Aqui reservo un lugar en la base de datos IBDetalles.Close; IBDetalles.Open; Luego empiezo a insertar los datos para la tabla Ingreso_Detalles, pero necesito el ID de la tabla Ingreso, pero este se genera mediante un trigger en firebird. - Deseo saber por que al momento de insertar los datos en la tabla Ingreso_Detalles no se guarda el id de la tabla maestro Ingreso??. (Seguramente por que todavia no realize un post y no cuento con el id generado por firebird) - No deberia funcionar esto, si lo puse en maestro-detalle, o sea al momento de guardar el maestro el detalle no deberia modificarse automaticamente y obtener el id del maestro para colocarlo en id_ingreso??? - Como puedo obtener el id que genero Firebird antes del post del maestro para usarlo en el detalle?? Espero que este masomenos claro lo que deseo hacer. Gracias de antemano por su respuesta. |
#2
|
||||
|
||||
Según parece usas los componentes Interbase, que en el futuro podrían darte problemas con incompatibilidades, si estas a tiempo, puedes usar MDOLIB, que también son libres y cumplen su función muy bien.
En MDOLIB, (supongo que en IB también lo tienes) en el Dataset tendrá una propiedad GeneratorField, que identifica el generador a usar y cuando usarlo, tienes 3 posibilidades (waServer, waPost, waNewRecord), con waPost funciona como quieres. En Interbase, hay una variable llamada CopyMasterFieldToDetail en la unidad IBUtils.Pas, figura en la línea 85 y 360 de ese archivo y se usa también en los descendientes de IBCustomDataset. Poniendo esa variable Booleana en True se supone hace lo que quieres. Acabo de mirar el código de OnNewRecord para IB y en el código aparece:
Visto esto, en el OnNewRecord también funcionaría... aunque puede darte mucha lata crean un registro vacío y después cancelan dicho registro (el Generador se incrementará en cada OnNewRecord) Espero que alguno de estos comentarios te sirva. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 19-02-2007 a las 12:34:06. |
#3
|
|||
|
|||
Gracias por tu respuesta, ahora voy a ver eso .
Tambien voy a ver de usar MDOLIB o ADO :P. Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema tabla Maestro-detalle en la q la pk de t.detalle formad por 2cods de la maes | akinom38 | Varios | 1 | 09-11-2007 19:27:44 |
Problema con maestro detalle | escullar | Impresión | 2 | 21-12-2005 09:53:01 |
Problema con Maestro-Detalle | AGAG4 | Firebird e Interbase | 8 | 11-09-2004 18:23:38 |
Problema con Maestro-Detalle | AGAG4 | Firebird e Interbase | 2 | 20-08-2004 15:51:14 |
Problema con Maestro-Detalle | AGAG4 | Varios | 0 | 17-08-2004 02:56:45 |
|