Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-08-2003
lafirma lafirma is offline
Miembro
 
Registrado: may 2003
Ubicación: Honduras
Posts: 159
Poder: 22
lafirma Va por buen camino
Recuperar todos los registros en consulta

Uso Delphi 7 con firebird 1.0 a traves de ibx
tengo un problema con el IBQuery, hago una consulta tipo selec * from mitabla, pues esta tabla solo tiene unos cuantos registros, pero resulta que el IBQuery no me trae todos los registros sino que solo uno, y necesito que los traiga todos de la base de datos en forma automatica, actualmente la solucion que hice fue hacer lo siguiente:
query.last;
query.first;

de esta manera ya accedo a todos los registros, pero me incomoda este comportamiento, la cantidad de registros no es mucha, a lo sumo 10.
como puedo hacer para que el componente recupere todos los registros de una vez?
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #2  
Antiguo 03-08-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Todos los dataset, cuando se los consulta, POR SUERTE paginan los resultados, es decir solo te traen los resultados de la primer página de datos al menos que exigas el resto como lo haces con el mètodo Last. La ventaja de esto es ganar velocidad y recursos ya que en la muchos casos solo necesitamos el resultado de los primeros registros...

Suerte!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 03-08-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Posteado originalmente por delphi.com.ar
Todos los dataset, cuando se los consulta, POR SUERTE paginan los resultados
Creo no entender bien esto que dices y me llama mucho la atención. Cuando comencé a trabajar con Delphi y MySql, tanto con Zeos como con DBExpress, un SELECT * se traía todos los datos de un una sólo vez. Lo recuerdo ya que intenté hacerlo con una tabla en el servidor con 70000 registros y pues mis dedos se dirigieron al CTRL-ALT-SUPR antes de que terminara. ¿Será porque MySql no tiene cursores?

// Saludos
Responder Con Cita
  #4  
Antiguo 03-08-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Si bien es cierto que se traen paginas de registros, como mínimo se traeran los registros necesarios para rellenar las posibles lineas de un TDBGrid (si se visualiza con este). O sea, que por mucho que se trajera por pagina 1 registros (cosa que dudo a no ser que tenga muchos campos o es tos sean muy grandes), si el TDBGrid puede visualizar 20 registros, se traeria 20 paginas, es decir, 20 registros

No se que componente estara utilizando para la visualizacion, yo he explicado el caso del TDBGrid

Tambien podria ser que se haya modificado la propiedad BufferChunks del TIBQuery
Responder Con Cita
  #5  
Antiguo 03-08-2003
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
Buenas,
Cita:
Posteado originalmente por delphi.com.ar
Todos los dataset, cuando se los consulta, POR SUERTE paginan los resultado
esto no es siempre así, algunos DataSet paginan los resultados y otros no.

Todo lo que digo es en base a lo que escribe Ian Marteens en "La Cara Oculta de Delphi 6"

Los TTable (BDE) trae los registros incrementalmente según los necesitamos. Los TQuery (BDE también) devuelven todos los registros.

En ADO, si utilizamos los cursores estáticos en el cliente (los que recomienda el libro) se traen de golpe todos los registros de la consulta.

En DBExpress no lo recuerdo, pero como en teoría no hay caché supongo que los registros no viajan hasta el cliente a menos que no tengamos un ClientDataSet. Ahora mismo no sé como lo hace el ClientDataSet, pero creo que puede configurarse para que pagine, aunque por defecto no lo hace (repito, no esto seguro)

Imagino que dado que TDataSet es una clase abstracta no define este comportamiento sinó que deja que sus descencientes lo implementen. Es solo una suposición, no he mirado el código fuente (Dios me libre )

Saludos!
Responder Con Cita
  #6  
Antiguo 04-08-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Es verdad, falta información a mi respuesta y esta mal decir Todos los DataSets, por lo que dice marcsc, pero no olviden leer la PD... Mismo no se porqué contesté porque nunca he usado IB.... Y esto no solo depende del dataset sinó de la forma de armar los cursores que tenga el motor de base de datos.
Recordemos que en BDE podemos configurar en el alias el ROWSET SIZE que nos dice Specifies the number of rows to retrieve from the server in a single fetch

Cita:
Posteado originalmente por roman
Cuando comencé a trabajar con Delphi y MySql, tanto con Zeos como con DBExpress, un SELECT * se traía todos los datos de un una sólo vez.
Me extraña mucho que tecnologías nuevas hagan esto, ¿Tenía un Order By el query?.. ¿Un Filter?... Ejecutabas algún método??...


Tengan en cuenta un detalle: Este hilo lo postee el sábado por la noche desde un boliche/club .. ustedes imaginen la situación.. y me sorperde que solo tenga una falta de ortografía!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 04-08-2003
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
Cita:
Posteado originalmente por delphi.com.ar
Este hilo lo postee el sábado por la noche desde un boliche/club
Dios mio! lo tuyo sí que es devoción!!

Saludos!
Responder Con Cita
  #8  
Antiguo 04-08-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Fue mas curiosidad que otra cosa... A quien se le ocurre poner una PC con conexión a internet en ese lugar????... Y ¿A que otro sitio puedo entrar?... lo que si, veo que no es productivo, la próxima ves, me voy a contener...

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #9  
Antiguo 04-08-2003
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
No te contengas, así descubriremos poco a poco los secretos oscuros de tu vida privada

Saludos compañero!
Responder Con Cita
  #10  
Antiguo 07-08-2003
lafirma lafirma is offline
Miembro
 
Registrado: may 2003
Ubicación: Honduras
Posts: 159
Poder: 22
lafirma Va por buen camino
bueno, en realidad el IBQuery lo uso para que su resultado sea la fuente de unos campos lookup de otro dataset, asi que no lo presente en pantalla directamente...
de todas maneras existe manera de decirle al ibquery que traiga todo?

que hay del BufferChunks? no uso nada de BDE ni ado, solo IBX
__________________
Saludos

Douglas Cruz
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 12:26:54.


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