Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MasterSource und Filter gleichzeitig möglich (https://www.delphipraxis.net/84434-mastersource-und-filter-gleichzeitig-moeglich.html)

MrSpock 16. Jan 2007 21:42

Datenbank: Firebird • Version: 2.0 • Zugriff über: TIBTable

MasterSource und Filter gleichzeitig möglich
 
Hallo,

wenn ich eine Detailtabelle habe, deren Eigenschaften MasterSource ich so setze, dass die passenden Datensätze zur MasterSource ausgewählt werden, kann ich dann eigentlich ZUSÄTZLICH noch einen Filter setzen? (Dabei ist es jetzt weniger interessant, ob das ein guter Programmierstiel ist [ist es nämlich nicht], sonderen nur, ob es möglich ist, oder ob der Filter die MasterSource überschreibt.)

marabu 17. Jan 2007 06:48

Re: MasterSource und Filter gleichzeitig möglich
 
Hallo Albert,

nach meinen Quellen werden die Prädikate der Filter-Property vor den Prädikaten der LinkFields (MasterSource) in das interne SELECT-Statement eingebaut.

Freundliche Grüße

MrSpock 17. Jan 2007 12:57

Re: MasterSource und Filter gleichzeitig möglich
 
Hallo marabu,

werden die Bedingungen dann "verundet"?

shmia 17. Jan 2007 13:17

Re: MasterSource und Filter gleichzeitig möglich
 
Du kannst auf jeden Fall das Event OnFilterRecord benützen.
Zusätzlich muss dann Filtered auf True gesetzt werden.
Das Property Filter bleibt dann leer.
Da der Filter nur lokal in deiner Anwendung wirkt, werden natürlich auch die ausgefilterten Datensätz aus der Datenbank gelesen.
=> Unter Umständen schlechte Performance, aber es funtioniert.

marabu 17. Jan 2007 18:30

Re: MasterSource und Filter gleichzeitig möglich
 
Hi,

Zitat:

Zitat von MrSpock
werden die Bedingungen dann "verundet"?

gute Frage - Antwort: Ja.

Für die Klammerung im Filterausdruck bist du selbst verantwortlich. Insbesondere setzt der SQL-Generator keine Klammern um den gesamten Filterausdruck.

Freundliche Grüße

MrSpock 17. Jan 2007 19:54

Re: MasterSource und Filter gleichzeitig möglich
 
Hallo marabu,

genau das war das Problem.

Ich hatte einen Filterausdruck in der Form:

Delphi-Quellcode:
Filter := '(Grp=1) or (Grp=-1)';
Dann wurden mir alle Datensätze angezeigt, obwohl dieser Filter auf eine Detailtabelle saß, die bereits durch eine Mastersource eingeschränkt war.

Nachdem ich den Ausdruck neu geklammert habe:

Delphi-Quellcode:
Filter := '((Grp=1) or (Grp=-1))';
hat es funktioniert. Da soll jemand drauf kommen. :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:23 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