Ver Mensaje Individual
  #2  
Antiguo 09-07-2007
[juanramones] juanramones is offline
Miembro Premium
 
Registrado: ene 2007
Posts: 6
Reputación: 0
juanramones Va por buen camino
Smile 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.
Responder Con Cita