Hola,
Lo que tengo es una consulta de este tipo:
Código SQL
[-]
select * from tabla
where
campo1 like :campo1 and
campo2 like :campo2 and
campo3 like :campo3
...
Al momento de ejecutar la consulta, sustituyo los parámetros de esta manera:
Código Delphi
[-]
if Edit1.Text = ''
then Query.ParamByName('campo1').AsString = '%'
else Query.ParamByName('campo1').AsString := Edit1.Text;
if Edit2.Text = ''
then Query.ParamByName('campo2').AsString = '%'
else Query.ParamByName('campo2').AsString := Edit2.Text;
if Edit3.Text = ''
then Query.ParamByName('campo3').AsString = '%'
else Query.ParamByName('campo3').AsString := Edit3.Text;
...
El usuario, si quiere, puede introducir el comodín % en sus edits para coincidencias parciales, pero si deja en blanco un edit, yo le pongo el comodín para que así ese campo realmente no forme parte de la condición (la comparación campo like '%' siempre será true).
De esta manera, el usurio puede buscar por uno o más campos, sin tener que especificar con un botón de radio o una lista de selección múltiple u otros artilugios, los campos que deben incuirse en la búsqueda; además de que, como tal, la consulta SQL es fija, si necesidad de construirla al vuelo.
// Saludos