Wenn FetchAll = false, wird nur eine Teilmenge der Daten vom Server geholt. Der "Rest" erst bei Bedarf. Dieser Bedarf tritt ein, wenn ein Filter gesetzt wird. Dann werden alle Daten benötigt, da der Filter ja auch eine mehr oder weniger große Menge des "Restes" betreffen kann. Das beim Setzen der Filters erforderliche Nachladen der hier ja wohl eher nicht unerheblichen Datenmenge kann dann schonmal etwas dauern. Und wenn die Daten dann da sind, muss die Filterbedingung für jeden Satz geprüft und ggfls. angewandt werden. Und das kann dann schonmal etwas dauern -> Die Anwendung friert ein.
Also wenn man die Kombination Firebird, FireDAC und Server-Cursor verwendet und einen Filter vorm Öffnen der Tabelle setzt, werden nur die benötigten Daten geholt. Die Table-Komponente verhält sich da also wie eine
Query mit Where-Bedingung...
Wir hatten nämlich auch das Problem, dass wir eine alte
BDE-Anwendung migriert haben und da sehr viele Tabellen-Komponenten mit Filter vorhanden waren, die wir nicht alle auf
Query umstellen wollten/konnten.