PDA

Ver la Versión Completa : Seleccionar n registros a partir de uno dado


fidel
12-10-2005, 21:15:57
Hola:

Usando SELECT TOP se pueden seleccionar por ejemplo los primeros 50 registros de una tabla, pero quisiera saber si después de localizar un registro en un DBGrid y quedarme en él, se podrían seleccionar los 50 registros siguientes a este.

Un saludo.

marcoszorrilla
12-10-2005, 21:49:12
Pues por lo que parece estás utilizando Access o similar, en ese caso solamente tienes la claúsula Top y Last.

Quizás la solución está en lograr que el primer registro de la consulta sea el que selecciones en este caso Top 50 resultaría.

Por ejemplo si son facturas ordenadas por número y pinchas en la 2000

Select Top 50 Numero, Base, Iva, Total
Where numero > 2000

Un Saludo.

luisgutierrezb
12-10-2005, 22:32:31
pues tal vez si puedieras filtrar la tabla, por ejemplo si usas folios y traes del 100 al 300 y te posicionas en el 154 y quieres seleccionar los 50 que sigues, haces el filtro del 154 al 204...

ContraVeneno
12-10-2005, 22:46:38
Select Top 50 *
from TuTabla
where TuLlave<=(Select TuLlave
from TuTabla
where TuLlave='lo que quieres')
order by TuLlave

o simplemente cambias la sub-consulta por el valor que tienes un tu DBGrid
¿algo así? ¿o ando muy perdido?

fidel
13-10-2005, 19:40:35
Hola:

Al plantear mi duda, decía que con SELECT TOP se pueden seleccionar los n registros primeros de una tabla, pero yo no lo había probado porque para lo que yo quería me parecía que no servia, simplemente lo vi consultando un tutorial de SQL.

Al probarlo veo que no me funciona, por lo que aclaro (debí haberlo indicado antes) que las tablas son FireBird.

Siguiendo las indicaciones que me haceis, para buscar los 50 registros a partir de una posicón pongo esto

'Select Top 50 * from LIBROS
where SIGNATURA => 1/11
order by SIGNATURA'


y me da este error

Dynamic SQL error
SQL error code =-104
Token unknown - line 1, char 12
50.

¿Estoy haciendo algo mal? o ¿TOP no funciona en FireBird?.

Un saludo.

vtdeleon
13-10-2005, 19:42:34
Saludos

Para Firebird es First no Top

ContraVeneno
13-10-2005, 20:30:32
exacto First(x) en lugar Top X .... (no se porque siento que esto ya lo he vivido (http://www.clubdelphi.com/foros/showpost.php?p=110200&postcount=15) antes)

y no estoy seguro pero creo que tambien tendría que ser >= en lugar de =>

fidel
14-10-2005, 18:10:41
Hola:

Muchas gracias a todos, con vuestra ayuda esto ya funciona.

'Select first(' + QuotedStr(sCant) + ') * from LIBROS
where TITULO >= ' + QuotedStr(sBusc) +
' order by TITULO';


Un saludo.

Patricio
15-06-2006, 14:40:39
hola foro, yo uso delphi 5 e interbase 6, y quiero dado un query que me devuelva los 50 primeros, probe con first y top y no anda, que puedo usar o capaz que no lo escribi bien el top y first.

select first(50) codigo, apellido from clientes;
select top 50 codigo, apellido from clientes;

asi lo puse YO
si alguien lo sabe me avise que es para que se carguen un monton de cupones para el mundial en un negocio de comidas que se lo llevo en 2 horas
Saludos

ContraVeneno
15-06-2006, 22:14:25
si usas firebird entonces es first (x) porque para firebird no existe top, y según veo tu consulta no tiene nada extraño y debería funcionar, tal vez el problema esta en algún otro lado.

Podrías poner el código de como ejecutas esa consulta y tal vez alguien te pueda ayudar.