No te entiendo muy bien, vamos a ver si haciendo un locate con esos cuatro campos no existe un registro unico sino varios, es lógico que se posicione en el primero que encuentra, si tu tabla solo tiene esos cuatro campos y hay varios registros con esos cuatro campos iguales lo que deberías hacer es mostrar un dbgrid editable ya que sobre dbedits solo puedes editar/mostrar un solo registro.
Pon un if a ver si te realiza el locate:
Código Delphi
[-]
if Form2.Table2.Locate('EMPRESA2;HORAINICIO;HORAFIN;ANULADO2', VarArrayOf([Form2.Query2.Fieldbyname('FECHARESERVA').value,
Form2.Query2.Fieldbyname('HoraInicio').value, Form2.Query2.Fieldbyname('HoraFin').value,Form2.Query2.Fieldbyname('Anulado2').value]), []) then
else
showmessage('No existen entradas');
Saludos, Tony