Saludos
Que Base de datos utilizas?
Con Firebird podrias usar
Containing sin mayores problemas. Si una de sus variables está vacia, la omite.
Código SQL
[-]Select * from tabla
where campo1 containing :edit1 and campo2 containing :edit2 and campo3 containign :edit3
Otra forma, olvidando qué base de datos se utilice. Puede ser con condiciones, evaluando cual de esos edit se desea poner en condicion y despues agregarlo a la sentencia.
No se como haces para seleccionar cuál edit debe ser tomado encuenta. Yo tomare que es por tener algun valor en su propiedad Text.
Código Delphi
[-]
var
Sentencia:String;
Begin
Sentencia:='Select * from tabla';
if edit1.Text<>'' then
Sentencia:=Sentencia+ ' campo1='+ QuotedStr(edit1.text) else if edit2.Text<>'' then
Sentencia:=Sentencia+ ' campo1='+ QuotedStr(edit2.text)
else if edit3.Text<>'' then
Sentencia:=Sentencia+ ' campo1='+ QuotedStr(edit3.text);
Dataset.Sql.Text:=Sentencia;