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)
-   -   Simular una relación maestro-detalle (https://www.clubdelphi.com/foros/showthread.php?t=16646)

zerelho 06-12-2004 03:25:37

Simular una relación maestro-detalle
 
Antes de nada haber, perdón si no me explico correctamente...

Tengo una clase ventana con 2 datasource (FuenteMaestros y FuenteDetalles) para visualizar las relaciones maestro detalle (con los datos del maestro, una barra de navegación para los maestros y una rejilla para los detalles), el problema es que como necesitro filtrar los registros detalles y permitir la ordenación por diferentes campos, pues no puedo utilizar un relación master-detail implicita entre los dataset... la forma que utilizo para simular la relación es mediante un filtro en la tabla detalles y lo voy cambiando en el evento OnDataChange del DataSource "FuenteMaestro" preguntando si el dataset se encuentra en estado "dsBrowse"... os muestro el código del metodo
Código Delphi [-]
 
 
procedure TWndExploracionMD.FuenteMaestroDataChange(Sender: TObject; Field: TField);
begin
// Solo contemplamos los cambios de posicion, no las inserciones ni ediciones ni estados especiales
If (FuenteMaestro.DataSet.State=dsBrowse) Then
Begin
...
...
// Actualizamos los filtros
If Not FuenteMaestro.DataSet.IsEmpty Then
    Begin
    FiltroMaestro:=getFiltroMaestroActual;
    ActivarFiltroLineas()
    End
Else
    Begin
    // TODO: Cuando la fuente maestro está vacia, utilizar un filtro nulo
    // FuenteDetalles.Dataset.Filter:= FILTRO NULO
    End;
...
...
End;
end;

La verdad es que lo de la simulación de la relación maestro-detalle de esta forma me esta dando muchisimos problemas, pero no sé o por lo menos no se me ocurre otra forma de hacerlo, existe alguna solución mejor? cuando no quiero que pase ningun registro un filtro determinado, cual deberia ser este? existe alguno del tipo Filter:='FALSE' o algo parecido?

Estoy trabajando con una BD en Access y accedo a ella mediante ADO.


La franja horaria es GMT +2. Ahora son las 17:39:26.

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