Ver Mensaje Individual
  #1  
Antiguo 06-12-2004
zerelho zerelho is offline
Miembro
 
Registrado: mar 2004
Posts: 28
Reputación: 0
zerelho Va por buen camino
Unhappy 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.

Última edición por zerelho fecha: 06-12-2004 a las 04:00:24.
Responder Con Cita