Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Urgente !! MAESTRO-DETALLE (https://www.clubdelphi.com/foros/showthread.php?t=45606)

mRoman 09-07-2007 03:48:05

Urgente !! MAESTRO-DETALLE
 
Hola Amigos....ESTOY DESPERADO !!!.

Estoy realmente deseperado porque no encuentro la forma de grabar registros en una relacion maestro detalle....alguien me podria explicar como puedo grabar registros en una relacion como la antes mencionada?...

Esto quiero hacer, quiero ir agregando los detalles de una factura a un DBGrid y posteriormente grabarlos en la tabla de detalles....lo anterior quiero q se haga cuando le de un click en un boton para que grabe la informacion....estoy tratando de grabar primero el tabla maestra y luego en la de detalles....o alguien tiene una mejor forma de grabar los detalles a una factura ?....

Se puede grabar todo al mismo tiempo utilizando un solo DataSet, y se me ocurre usar el evento AfterInsert o AfterPost, para que posteriormente, mediante un procedimiento almacendo, inserte los registros en la tabla de detalles !!!??? ...ESTOY MAL ???....ESTO la verdad todavia no lo intento.

Lo q intentado es lo siguiente, habilite una tabla con la misma estructura de los detalles (de paso) y posterior a grabar el registro maestro, tomé esta tabla y empece a recorrerla para insertar cada uno de los registro a la tabla detalles original -en la que deben de estar los registros-, utilizando un procedimiento almacenado....pero la verdad creo que no es la mejor solucion ni la mas optima....

HELP ME !!!....por favor. Espero sus comentarios Y GRACIAS DE ANTEMANO



Sinceramente estoy realmente desorientado......

juanramones 09-07-2007 05:07:47

Maestro Detalle
 
1. Mantenga la Calma -> lo de Urgente!! no le ayudará a solucionar el problema, antes causa el efecto contrario en el foro.

2. Solución:

Si ya tiene la BD con las tablas relacionadas entonces:

Si ya agregó los componentes de acceso del conjunto de datos o sea algún TDataSet que hagan referencia a las tablas, como un TADOTable por ejemplo, entonces:

Tablas - DataSet - DataSource
Maestro - SetMaestro - SourceMaestro
Detalle - SetDetalle - SourceDetalle

Agrege un componente TDataSource (SourceMaestro) que haga referencia a la Tabla Maestro (SetMaestro).

En el componente TDataSet que hace referencia a la Tabla Detalle (SetDetalle), busque la propiedad MasterSource y coloque allí el SourceMaestro

En la propiedad MasterFields seleccione los campos que conforman la Unión entre ambas Tablas (Ej: MaestroID-DetalleID).

Agrege un componente TDataSource (SourceDetalle) que haga referencia a la Tabla Detalle (SetDetalle)

Obviamente el DBGridDetalle va relacionado con SourceDetalle.

Si lo desea puede agregar un componente TDBNavigator también relacionado con SourceDetalle para crear una barra estándar.

y Voilé ... una relación Maestro-Detalle a surgido...

Ahora el tema de que con un Botón se grabe se soluciona llamando al método SetDetalle.Post en el Evento OnClick

Código Delphi [-]
SetDetalle.Post;

Pero antes SetDetalle debe estar en estado de inserción usando

Código Delphi [-]
SetDetalle.Insert;

Para chequear el estado de SetDetalle utilice

Código Delphi [-]
if (SetDetalle.Status = dsInsert) then
begin
 SetDetalle.Post; 
end;

Pruébelo y cuéntenos como le fue ...
________________________________________
Con colaboración podemos lograr cosas grandes.

mRoman 11-07-2007 04:36:00

Maestro-Detalle.....a detalle
 
1 Archivos Adjunto(s)
Gracias....por su apoyo y comentarios.....y efectivamente estuve probando lo q me comento, desafortunadamente todavia existen algunas dudas al respecto, intentare nuevamente explicar lo que quiero hacer.

Para lo anterior envio adjunto a este correo una imagen (.ZIP) de la pantalla que estoy realizando. Esta pantalla muestra datos del tabla Maestra como datos de la tabla de detalles. En la parte de arriba tengo "Numero Consecutivo", el cual al teclear un numero valido, el programa debe validar si el registro existe en la tabla maestra y si encuentra el registro, debe visualizar los registros que existan en la tabla de detalles correspondientes al numero consecutivo de la tabla maestra.

En caso de NO encontrar el registro en la tabla maestra, entonces el sistema debe permitir agregar registros tanto al maestro como al detalle, es aqui donde estoy atorado.....COMO LE HAGO PARA QUE EL USUARIO pueda anexar tantos registros como "servicios" quiere el cliente (servicios de una lavanderia) y q esta misma pantalla me sirva para modificar los datos tanto como del maestro como del detalle en caso de haber modificaciones posteriormente.

En la parte de "Registros de Servicios y Prendas", es la parte donde registrare los detalles o servicios del cliente.

Ej. si el número consecutivo no existe en la base datos, que me permita anexar un registro al maestro y luego al detalle....pero esto lo quiero hacer al mismo tiempo, q en cuanto haga el primer registro en el detalle, q grabe al maestro y luego al detalle (si sucede lo contrario marcara error de integridad) -espero q no suene cantinflesco- En la pantalla todavia no anexo botones para grabar o modicar.....y que posteriormente me siga agregando registros a la tabla de detalle.

Espero que lo que estoy tratando de hacer no sea tan complicado.....talvez la explicacion que me den pueda ser muy extensa.....

Bueno espero su comentario y sugerencias, ya q estoy abierto a cualquier cosa q me pueda ayudar a resolver esta bronca....de hecho si la manera de como lo quiero hacer cambias radicalmente, no hay problema.

Si tiene MSN agregeme por favor, en realidad estoy interesaro en terminar esta parte del sistema (namorb@hotmai.com)

....................Saludos...!

Román.

mRoman 22-07-2007 20:14:01

Gracias....me sirvieron mucho sus comentarios...lo aplique y todo perfercto.

GRACIAS A TODOS


La franja horaria es GMT +2. Ahora son las 13:57:43.

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