Por experiencia, cuando algo no sale, miramos las cosas más absurdas y nos emperramos en que hay un virus en el ordenador que no lo deja funcionar bien.
Ese momento es el idóneo para dejar el puñetero ordenador y hacer otra cosa que no tenga nada que ver con el trabajo ni con ordenador.
El fallo es la propia consulta sql, ya que debe decir: where Historico = 'No' (¿ves las comillas simples? pues faltan en tu sql).
Código Delphi
[-]
Procedure Prueba();
Var
difAnt:real;
i:integer;
error:boolean;
begin
query.SQL.text:=('SELECT * FROM Datos WHERE Historico=' + QuotedStr(No));
query.Open();
while not query1.Eof do
query.next;
query.close;
end;
Una observación: Yo he usado QuotedStr que añade comillas simples alrededor de la palabra. Pero no sé lo que espera Access (o ADO), puede que espere comillas dobles... la que está encima del número 2.
Saludos y descansa un poco amigo fonx, te lo mereces.