Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Moverse por los registros de una tabla (https://www.clubdelphi.com/foros/showthread.php?t=900)

Un abrazo 28-05-2003 13:35:32

Moverse por los registros de una tabla
 
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!


La franja horaria es GMT +2. Ahora son las 20:18:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi