PDA

Ver la Versión Completa : Moverse por los registros de una tabla


Un abrazo
28-05-2003, 13:35:32
Tengo un formulario con los campos de una tabla y me quiero mover a través de los registros de la tabla con botones hechos por mi utilizando SQL.

Para realizar el boton de siguiente he utizado la siguiente sentencia SQL:

'select first 1 NumRegistro from Entrada
where NumRegistro>'+IntToStr(NReg)

De esta forma elige el primero de los registros mayores al actual.

Pero al hacer el boton anterior intento utilizar el last en vez del first y < en vez de mayor > para coger el último de los menores y el programa no lo acepta:

'select last 1 NumRegistro from Entrada
where NumRegistro<'+IntToStr(NReg)

Vosotros le veis algun fallo o es que no es asi????

javiermorales
28-05-2003, 14:27:52
Podrías utilizar las siguientes sentencias:

1.- Para obtener el siguiente registro:

select MIN(NumRegistro) from Entrada
where NumRegistro>IntToStr(NReg)

2.- Para obtener el anterior:

select Max(NumRegistro) from Entrada
where numRegistro<IntToStr(NReg)

No lo he probado, pero creo que funcionará.

Espero que te ayude.

Bacterion
28-05-2003, 14:56:27
¿no te estás complicando demasiado la vida?
¿Porqué no usas una tabla o query y navegas llamando a los métodos Next, Prior, etc..?

javiermorales
28-05-2003, 14:59:51
Estoy de acuerdo con Bacterión, pero como lo ha preguntado en SQL, pues se lo he dado.

De todas maneras, hazle caso a Bacterión, si no tienes obligación de hacerlo con SQL´s.

Un abrazo.

Un abrazo
28-05-2003, 15:03:43
Estoy haciendolo con SQL para no cargar 20.000 registros y cargar solo 1 con lo cual el programa en red va a ser mas rápido.

Solo era por eso.

Por cierto muy buena y idea lo del Max y el Min, no se me había ocurrido.

Gracias a todos, problema resuelto

Bacterion
28-05-2003, 15:05:38
Las querys no se traen toda la tabla, se traen lo que el cliente de la base de datos tenga configurado que debe traer (paquetes de n kas). Si quieres controlarlo más, usa un clientdataset con packetrecord a 1...

jcasassa
31-05-2003, 20:23:24
No mencionas en que tipo de BD estás pero recuerda que en SQL el tipo de cursor que hayas abierto el Dataset determina el comportamiento.
Si es una Query, no hay navegación, esto quiere decir, que sabe recuperar datos y actualizar datos, pero no hay marcas de posición. No sabe, quien es el proximo, o el anterio.
Para ello hace falta un cursor que SEPA navegar, pero esto quiere decir que consume recursos, posible lo es, pero es menos eficiente.
Espero que te haya ayudado.
Hasta luego!