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 13-01-2010
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Unhappy Ayuda con consulta...

Hola a todos...

Tengo Delphi 2007, Zeos y Firebird.

Si realizo esta consulta:
Código SQL [-]
select * from CONSIGNACION

Se demora mucho debido a la gran cantidad de registros, hay alguna manera de que pueda traer solo los 30 primeros registros y si el usuario llega a la consulta del registro 30 (por medio del DBNavigator) cargue los proximos 30 registros??

Gracias de antemano

Última edición por vtdeleon fecha: 18-01-2010 a las 19:50:00.
Responder Con Cita
  #2  
Antiguo 13-01-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Cita:
Empezado por Jose Roman Ver Mensaje
Hola a todos...

Tengo Delphi 2007, Zeos y Firebird.

Si realizo esta consulta:
Código SQL [-]
select * from CONSIGNACION
Se demora mucho debido a la gran cantidad de registros, hay alguna manera de que pueda traer solo los 30 primeros registros y si el usuario llega a la consulta del registro 30 (por medio del DBNavigator) cargue los proximos 30 registros??

Gracias de antemano
Bueno segun veo puedes hacer esta consulta para traer los primeros 30 registros(En MySQL es muy facil usando la clausula Limit).
En firebird solo conosco la forma limitar o traer los n primeros registros, mientras que en Mysql puedes traer los registro desde una "x" posicion hasta una "y" posiscion.

En Firebird(segun he visto)
Código SQL [-]
select first 30 from CONSIGNACION
En MySQL
Código SQL [-]
select * from CONSIGNACION Limit 30
En PostGree(segun he visto)
Código SQL [-]
select * from CONSIGNACION limit 30 offset 0
En MS SQL Server (segun he visto)
Código SQL [-]
Select Top 30 * from CONSIGNACION
En Oracle (segun he visto)
Código SQL [-]
select * from CONSIGNACION Where  ROWNUM<=30
En DB2(segun he visto)
Código SQL [-]
select * from CONSIGNACION FETCH FIRST 30 ROWS ONLY

Lo que veo mas conveniente hacer en tu caso es utilizar un ClientDataset que este enganchado a tu Dataset(ZQuery, ZTable) atraves de un TDataSetProvider.
¿Pero que ventajas obtengo con eso? Diras tú.
Bueno...lo que pasa es que el clientDataset es tan potente y buen componente que tiene una infinidad de propiedades y metodos; en este caso deberias configurar la propiedad PacketRecords del ClientDataSet para limitar la cantidad de registros a traer. De esa manera solo se traerá la cantidad de registro especificado en dicha propiedad, y he aqui viene lo mas bueno del clientdadtaset; cuando el usuario, que esta navegando por los registros,sobrepasa el ultimo registro traido, el clientDataset es tan bueno que se conecta nuevamente y va y trae los otros registros siguiente(en tu caso 30 siguientes) y luego se desconecta nuevamente para no saturar la red ni el servidor.
Esto es óptimo para cuando se tiene miles o millones de registros.
Para Mas Informacion sobre el ClientDataSet(parte1,parte2,parte3,parte4, parte5). En la Parte3 se habla de la propiedad PacketRecords.
Espero haberte podido ayudar en algo.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 13-01-2010 a las 19:20:23.
Responder Con Cita
  #3  
Antiguo 13-01-2010
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Gracias por tu pronta respuesta, a simple vista parece que esta es la solucion.
Responder Con Cita
  #4  
Antiguo 15-01-2010
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
Cita:
Para Mas Informacion sobre el ClientDataSet(parte1,parte2,parte3,parte4, parte5). En la Parte3 se habla de la propiedad PacketRecords.
Espero haberte podido ayudar en algo.
Saludos...
A mi si.

Gracias por compartir tu trabajo.

Saludos a todos.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda con consulta GuillermoMeert SQL 5 25-11-2009 09:38:26
ayuda en una consulta please lakers MySQL 5 15-04-2008 23:53:23
Ayuda con consulta SQL n03l SQL 4 18-04-2007 22:03:40
Ayuda con consulta @ngeluz Conexión con bases de datos 6 12-02-2006 21:38:58
Ayuda con una consulta plz ! K4RL0S SQL 9 17-11-2005 17:33:09


La franja horaria es GMT +2. Ahora son las 02:49:52.


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