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.
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
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
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.