AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken FireDac: Filterbedingung über OnFilterRecord ignoriert Master/Detail
Thema durchsuchen
Ansicht
Themen-Optionen

FireDac: Filterbedingung über OnFilterRecord ignoriert Master/Detail

Ein Thema von Gremlin · begonnen am 18. Jul 2025 · letzter Beitrag vom 18. Jul 2025
Antwort Antwort
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
178 Beiträge
 
Delphi 7 Enterprise
 
#1

FireDac: Filterbedingung über OnFilterRecord ignoriert Master/Detail

  Alt 18. Jul 2025, 09:51
Datenbank: Firebird • Version: 3 • Zugriff über: Delphi 10.2 Firedac
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
Gruss Gremlin
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.750 Beiträge
 
Delphi 12 Athens
 
#2

AW: FireDac: Filterbedingung über OnFilterRecord ignoriert Master/Detail

  Alt 18. Jul 2025, 10:23
Statt TFDTable solltest du besser TFDQuery verwenden und auf Parameter-based M/D umstellen. Bei Range-based M/D werden tatsächlich alle Datensätze geladen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz