Código Delphi
[-]
if datasource1.dataset.locate('fecha;hora;dni',
[valorDeFecha, ValordeHora, ValorDeDNI],[]) then
begin
datasource1.dataset.edit;
datasource1.dataset['Salida']:=horaSalida;
datasource1.dataset.post;
else
ShowMessage('Cliente no encontrado');
Como ves, solo faltaba los punto y comas, para que el locate encuentre varios campos a la vez (es un separador).
Los valores, los creo al vuelo, ya no necesitas la variable de valores.
Además se modifica el cliente si se ha encontrado, si no lo encuentra, mensajito al canto.
2k de saludos