Schau dir mal in der Hilfe zu den UniDAC die Verwendung von Macros an. Die kannst du zur Laufzeit setzen, ähnlich wie der vorgeschlagene Formatstring. Mit einem gravierenden Unterschied: hier wird das gesamte Argument gesetzt und das kann dann auch ein Leerstring oder NULL sein.
Ich würde wie folgt vorgehen: zunächst würde ich die Where-Klause grundsätzlich mit dem Argument 1=1 setzen. Erstens wird dann auf jeden Fall der Optimizer aufgerufen, zweitens spare ich mir den Test, ob eine Where-Klausel existiert. Die
Query würde dann um das Macro &Liste erweitert:
Delphi-Quellcode:
SELECT
ID, Login, Name
FROM
User
WHERE
1 = 1
&Liste
In der
Query trägst du auf dem Reiter Macro unter &Liste einen Dummy ein:
and 1 = 1
In deinem Quelttext überschreibst du dann das Macro:
Query.MacroByName('Liste').Value := 'and ServOrt in ('F', 'U')
.
Grüße
Mikhal