Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-10-2005
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Seleccionar n registros a partir de uno dado

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.
Responder Con Cita
  #2  
Antiguo 12-10-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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
Código SQL [-]
 Select Top 50 Numero, Base, Iva, Total
 Where numero > 2000

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 12-10-2005
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
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...
Responder Con Cita
  #4  
Antiguo 12-10-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Código SQL [-]
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?
__________________

Responder Con Cita
  #5  
Antiguo 13-10-2005
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
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
Código Delphi [-]
'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.
Responder Con Cita
  #6  
Antiguo 13-10-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Para Firebird es First no Top
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #7  
Antiguo 13-10-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
exacto First(x) en lugar Top X .... (no se porque siento que esto ya lo he vivido antes)

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


Última edición por ContraVeneno fecha: 13-10-2005 a las 20:40:35.
Responder Con Cita
  #8  
Antiguo 14-10-2005
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Hola:

Muchas gracias a todos, con vuestra ayuda esto ya funciona.
Código SQL [-]
'Select first(' + QuotedStr(sCant) + ') * from LIBROS
 where TITULO >= ' + QuotedStr(sBusc) +
 ' order by TITULO';

Un saludo.
Responder Con Cita
  #9  
Antiguo 15-06-2006
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
Urgente

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
Responder Con Cita
  #10  
Antiguo 15-06-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
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.
__________________

Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:17:23.


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
Copyright 1996-2007 Club Delphi