Vamos a ver te comento yo hago creo que lo mismo que tu, pero el DBGrid donde muestro los resultados no lo conecto a mi tabla de clientes, si no que lo conecto al resultado de la búsqueda, y luego para seleccionar que me muestre el cliente en el formulario principal de clientes hago lo siguiente:
Código:
UModulodatos.CLIENTE.Dataset.
Locate('CODIGO_CLIENTE',DBGResultados.Fields[0].Value,[]);
FrmResultadoBusquedaClientes.ModalResult:=MrOk;
Donde el primer campo que muestro en el DBGrid es el codigo_cliente que es a su vez la clave primaria de mi tabla cliente.
Otra cosa yo dejo varios Edits en blanco para la búsqueda, CIF,NOMBRE,CODIGO.
Y cuando ejecuto la búsqueda miro si el Edit esta vacío o no para añadir ese campo en la búsqueda es decir para filtrar más la tabla.
Espero que te sirva.
Si no te aclaras te puedo detallar el proceso con más detalle