PDA

Ver la Versión Completa : error al recorrer un query


jorgeganc
09-03-2005, 15:51:34
chicos recorro un query de la forma for....to recordcount do y se saltea egistros no se que le pasa ya que con cada uno de estos registros tengo q hacer algo en otra tabla ,y obviamente me salae errores de eof
alguien sabe algo de esto?

saludos gracias

marcoszorrilla
09-03-2005, 15:55:34
Por qué no pones el código con el que recorres los registros de la consulta, en realidad puedes utilizar un bucle con:

While not MiQuery.Eof do
begin
....
MiQuery.Next;
end;

Un Saludo.

jorgeganc
10-03-2005, 18:00:04
si en realidad lo recorro con

for x:=0 to q.recordcount -1 do
o con el while

pero el problema es con algo relacionado con el :current record,
salta el error que no respeta el eof o bof
estube buscando y hay algo raro con esto q le pasa a un monton de gente a mi la primera es como que la info no esta secuencial y salta d eun lado a otro

marcoszorrilla
10-03-2005, 18:03:13
Mira lo mejor es que visualices la consulta en una rejilla y despues ejecutas el bucle, así iras viendo como se mueven los registros y que es lo que ocurre.

Un Saludo.

pijo
11-03-2005, 11:23:09
Haces algo dentro del bucle que implique esta misma consulta? Ya sea un locate, delete, post, etc...
Yo de todas formas siempre prefiero recorrer el resultado de una consulta tal i como dice marcoszorrilla con un while not .eof do.

ánimos

Lepe
11-03-2005, 12:11:28
Segun tengo entendido solo algunos Datasets tienen implementado el RecordCount, es más si miras la implementación de Recordcount en la clase Tdataset, verás que devuelve -1.

Entonces dependerá de qué tipo de tablas uses y de si implementa el recordcount o no.

Para subsanar el error, simplemente hazlo como te ha dicho Marcos.

pero el problema es con algo relacionado con el :current record


Asegurate de estar en un registro correcto. query.First, query.Last segun te convenga, justo antes del bucle while.

Advertencia: Si estas borrando registros, no uses query.Next, el método tabla.Delete ya actualiza la posición.

Saludos