Ver Mensaje Individual
  #3  
Antiguo 20-11-2004
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.917
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
O puedes hacer un recorrido virtual. Hay dos maneras. La primera es cargar la lista de solamente los IDs y agregas una propiedad Cargado.

Basicamente, SELECT CampoID FROM Tabla, luego haces una clase como:

TVirtualData
Next;
Prior;
Last;
First;
DataSet;

Al moverte, con First o prior, etc... haces un SELECT * FROM..: WHERE Id=.... y solo carga ese registro.

Una mejora a lo anterior, es jugando con los ordenes. Debes tener un ID numerico ascendente (no tiene que ser secuencial) Luego, la misma clase, pero en vez de cargar la lista de Id, haces asi:

SELECT TOP X * FROM ...

Ahi se te carga el primer grupo de registros. Guardar el primer y ultimo ID. Al hacer Next la consulta cambia a

SELECT TOP X FROM ... WHERE Id>LastId

Reversas el order by para el anterior y para el ultimo. Sabes que has llegado a EOF si el numero de registros retornados es < a X.

La ventaja contra la opcion de los TClientDataSet es que es muy eficiente en cuanto a memoria y velocidad, y se puede balancear jugando con el valor X. Ademas, se hace en menos de 1 dia de codigo con todos los jugeticos
__________________
El malabarista.
Responder Con Cita