Hallo,
ist euch etwas darüber bekannt, dass eine Master/Detail-Beziehung ignoriert wird, wenn eine Filterbedingung im Detail via OnFilterRecord verwendet wird? Problem: Es werden alle Datensätze der Detail-Datenmenge geladen, mit Auslösen einer EOutOfMemory-
Exception, wenn ausreichend viele Details vorhanden sind.
Wird die Datenmenge jedoch über eine Filter := <Ausdruck>-Bedingung gefiltert, so tritt das Problem
nicht auf. Leider kann der Filter nicht darüber verwendet werden.
Master und Detail sind jeweils TFDTable, die über eine TFDConnection an einem Firebird 3.x Server verbunden sind. Spezielle Anpassungen wurden nicht vorgenommen. Detail enthält Master als MasterSource, verknüpft über das Feld 'Nr'
Verwendete Tabellen des Demo-Projekts:
Master (ca. 2000 DS)
Nr integer
Name varchar(50)
Detail (ca. 800000 DS)
Nr integer
PosNr integer
Name1
Name2 varchar(50)
Anzahl integer
Die
Exception passiert an dieser Stelle (FireDac.DatS.pas)
procedure TFDDatSRowListWithAggregates.AddObjectAt(AObj: TFDDatSObject;
AIndex: Integer);
begin
inherited AddObjectAt(AObj, AIndex);
if FAggregateSlotAllocated > 0 then
AddAggregatesRow(AIndex);
end;
Vielen Dank