Delphi > FireDAC

TFDTable + OnFilterRecord

(1/3) > >>

ShaneZB:
Ahoj všem.
Stále pracuji na migraci z BDE na FireDAC. Upravovaná aplikace používá jako startovací zobrazení aktualizací přehled jejich záznamů pomocí TTable (nově TFDTable). Pro rozumnou rychlost načtení obsahu jsem nastavil FetchOptions.Mode na fmOnDemand a FetchOptions.RowsetSize na 100. To je OK. Ale jakmile použiju filtrování přes OnFilterRecord, tak se to načítá hrozně dlouho. Můj odhad je, že to ignoruje nastavení FetchOptions.Mode a dělá FetchAll.
Pokud nastavím FetchOptions.RecsMax, tak to je sice rychlé, ale výsledek je nekompletní a nepřišel jsem na to, jak zajistit, aby se načetlo vše.
OnFilterRecord není možné přestat používat - to by znamenalo příliš velké úpravy na mnoha místech.

Moc prosím o nakopnutí a předem děkuji.

Jan Fiala:
Proti jaké databázi pracuješ s daty?
Jestli s nějakým SQL serverem, pak tam TTable nemá (až na velmi opodstatněné vyjímky co dělat). A ano, je to hromada práce a musíš to celé přepsat.

mbx:
Ano, kvuli filtrovani se stahnou vsechny zaznamy, a to obvykle nechces. Na podobny problem take zrejme narazis, pokud se pokusis pouzivat v datasetech vestavenou master-detail funkcionalitu. Na oboji je proto lepsi pouzivat podminku (where) v SQL dotazu.

Jirka:

--- Citace: mbx  24-09-2020, 10:31:06 ---Na podobny problem take zrejme narazis, pokud se pokusis pouzivat v datasetech vestavenou master-detail funkcionalitu. Na oboji je proto lepsi pouzivat podminku (where) v SQL dotazu.

--- Konce citace ---
To mě zaujalo. Máš to nějak exaktně ověřené ?

pf1957:

--- Citace: ShaneZB  24-09-2020, 09:09:06 ---OnFilterRecord, tak se to načítá hrozně dlouho. Můj odhad je, že to ignoruje nastavení FetchOptions.Mode a dělá FetchAll.

--- Konce citace ---
Odhad je spravny: OnFilterRecord je funkcionalita clienta, takze aby to spravne fungovalo, musi na clienta dostat vsechny zaznamy.
Jedine, co se s tim da udelat, je podminku z filtru presunout na server (do SQL dotazu) a jak pise JF, bez prace to nebude.

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi