Una pregunta, ¿cuántos registros te arroja esa consulta? Si pones un DBGrid, viéndose más de un registro en la lista, y haces el First, ¿se va realmente al último?
Por cierto, y como sugerencia aparte, puedes ahorrar algo de código (la llamada a Clear y la variable Consulta) asignando la sentencia Select directamente:
Código Delphi
[-]ZQueryEmpresas.SQL.Text := 'Select...';
Saludos cordiales.
