Hola roman.
Hice unas pruebas y con
Firebird/
TIBQuery, algunos cambios mediante, finalmente funcionó del modo que comentas.
Código Delphi
[-]
with IBQuery1 do
begin
Close;
SQL.Add('SELECT * FROM USUARIOS');
SQL.Add('WHERE NAME = CAST(:PARAM AS VARCHAR(30))');
SQL.Add('OR CAST(:PARAM AS VARCHAR(30)) IS NULL');
ParamByName('PARAM').Value:= NULL;
Open;
end;
Con mdb/
TADOQuery me trae todos los campos, aún cuando le especifique uno:
Código Delphi
[-]
with ADOQuery1 do
begin
Close;
SQL.Add('SELECT * FROM COUNTRY');
SQL.Add('WHERE (NAME = :PARAM) OR (:PARAM IS NULL)');
Parameters.ParamByName('PARAM').Value:= 'Cuba'; Open;
end;
Con
BDE y
TQuery si la tiene, no le encontré la vuelta (pero estos dos últimos componentes y gestores no son mi fuerte).
Saludos