Si el resultado del StoredProc es un conjunto de registros no deberías de llamar a ExecProc simplemente llama a Open, a parte de poner el prepared a false antes de asignar parametros....
Código:
DataModule2.buscar_cliente.Close;
DataModule2.buscar_cliente.Prepared=False;
DataModule2.buscar_cliente.Parameters[0].Value=Edit21.Text;
DataModule2.buscar_cliente.Prepared=True;
DataModule2.buscar_cliente.Open;
if (DataModule2.buscar_cliente.isempty) then
begin
ShowMessage('No hay coincidencias');
DataModule2.DataSource2.DataSet.Active=False;
end
else
DataModule2.DataSource2.DataSet.Active=True;