![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#3
|
||||
|
||||
|
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. |
|
|
|