Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Partial Load Mode --- QuantumGrid (https://www.clubdelphi.com/foros/showthread.php?t=59817)

Willo 09-09-2008 23:31:03

Partial Load Mode --- QuantumGrid
 
Hola a todos;

pues sigo experimentando con el QuantumGrid 5... he leido que existe una forma de cargar mas rapido un gran numero de registros. Se que la propiedad se llama Partial Load Mode... pero... alguien sabe en donde esta?

la he buscado en las propiedades del Grid, en las del Nivel y en las del DBtableview... sin suerte....

Agradezco de antemano cualquier ayuda.

Willo

donald shimoda 09-09-2008 23:40:18

Cita:

Empezado por Willo (Mensaje 312976)
Hola a todos;

pues sigo experimentando con el QuantumGrid 5... he leido que existe una forma de cargar mas rapido un gran numero de registros. Se que la propiedad se llama Partial Load Mode... pero... alguien sabe en donde esta?

la he buscado en las propiedades del Grid, en las del Nivel y en las del DBtableview... sin suerte....

Agradezco de antemano cualquier ayuda.

Willo

Uso quantumgrid y nunca use dicha propiedad, ni la encuentro tampoco. Revise los fuentes y menos. Estas seguro que ese es el nombre?

Saludos

TOPX 09-09-2008 23:45:16

Hola,

Se llama Grid Mode, y debe tener en cuenta que en ese modo no sirven los filtros ni otras cositas...

Edit:

Cita:

Grid Mode
When using Grid Mode, only a fixed number of dataset records is loaded into memory. Because only a limited set of records are retrieved from the dataset, automatic sorting, filtering and summary calculations are disabled in Grid Mode (must be controlled manually instead). By default, this mode is disabled and the ExpressDataController loads all records in a dataset.

donald shimoda 09-09-2008 23:55:03

Cita:

Empezado por TOPX (Mensaje 312980)
Hola,

Se llama Grid Mode, y debe tener en cuenta que en ese modo no sirven los filtros ni otras cositas...

Edit:

Ah, ahora si, esa la uso, pero lo dejo elegir al usuario , sabiendo que sacrifica (bueno no se si sabiendo, al menos me dicen que si con la cabeza):D

Neftali [Germán.Estévez] 10-09-2008 09:17:00

Las Quantum son buenas, pero no hacen milagros... :D:D:D:D

Es lo que ya hemos comentado otras veces aquí. Por defecto las QuantumGrid cargan TODOS los datos en memoria; Con todos los datos cargados pueden hacer los filtros, ordenaciones, agrupaciones, totales y demás.

El problema, como tu planteas, llega cuando no se pueden cargar TODOS los datos. Para eso se usa el Grid Mode, pero entonces se pierde lo demás.

El Grid provee eventos para que si el usuario pulsa sobre el título para ordenar o intenta realizar un filtro te llegue el "aviso" y puedes rehacer la consulta (por ejemplo), pero el tema de agrupaciones y totales creo que queda definitivamente descartado.

Un saludo no milagroso. ;)

Willo 11-09-2008 16:24:00

Debido a este problema (el manejo de grandes cantidades de registros); estamos reconsiderando el cambio a QuantumGrid; actualmente nuestra aplicacion usa el CRDBGrid de CoreLab.

Que si bien no es tan atractivo ni con tantas opciones como el Quantum, pues al menos maneja eficientemente grandes volumenes de registros.

Es una verdadera lastima, ya que nos habian gustado mucho las opciones que ofrecia el Quantum.

en fin... se comprueba una vez mas que el mundo no es perfecto

lbuelvas 11-09-2008 17:18:54

Bueno y los componentes nativos de Delphi TDBGrid tambien carga todos los registros ?

donald shimoda 11-09-2008 17:25:14

Cita:

Empezado por lbuelvas (Mensaje 313535)
Bueno y los componentes nativos de Delphi TDBGrid tambien carga todos los registros ?

Claro que los carga... Cual es la pregunta?
El problema es que el amigo quiere la versatilidad de los quantum sin que demore en cargar.

Creo que el secreto esta en restingir el conjunto de datos a manejar. ;)

ninguno 11-09-2008 17:34:29

Cita:

Empezado por donald shimoda (Mensaje 313539)
Claro que los carga...

Eso no es del todo cierto, depende del Dataset asociado al TDBGrid. Por ejemplo, si tienes un TClientDataSet, puedes hacer que te vaya cargando en paquetes de 20 registros (por decir algo) o bien todos a la vez.

En cambio, los QuantumGrid no tienen en cuenta el Dataset, lo cargan todo (si no se toca dicha propiedad).

Cita:

Empezado por donald shimoda (Mensaje 313539)
Creo que el secreto esta en restingir el conjunto de datos a manejar. ;)

En eso sí estamos de acuerdo. No creo que a nadie le interese tener cargados.... digamos más de 1000 registros; que ya considero demasiados, de heche, más de 100 registros no se los mira nadie. Y si es para hacer algún tipo de cálculo, pues se hace el cálculo por separado pero los datos visualizados se filtran.

donald shimoda 11-09-2008 17:38:15

Cita:

Empezado por ninguno (Mensaje 313551)
Eso no es del todo cierto, depende del Dataset asociado al TDBGrid. Por ejemplo, si tienes un TClientDataSet, puedes hacer que te vaya cargando en paquetes de 20 registros (por decir algo) o bien todos a la vez.

Pero en ese caso no decide el grid amigo, lo hace el dataset, asi que en realidad el grid esta cargando el conjunto de datos completo que brinda el dataset.:o
El grid no sabe si le pediste 20 o el conjunto de datos completos.

ninguno 11-09-2008 17:43:09

Cita:

Empezado por donald shimoda (Mensaje 313553)
Pero en ese caso no decide el grid amigo, lo hace el dataset, asi que en realidad el grid esta cargando el conjunto de datos completo que brinda el dataset.:o
El grid no sabe si le pediste 20 o el conjunto de datos completos.

No se si yo entendí mal o me expliqué mal :p

Entiendo que lbuelvas pregunta si el TDBGrid actua igual que el QuantumGrid, es decir, que sea cual sea el DataSet asociado y su configuración, cargue todos los registros; y eso es lo que estaba intentando explicar, es decir, que QuantumGrid es independiente del TDataSet asociado, él los carga todos esté detrás un TClientDataSet a 20 registros o a 50. En cambio, el TDBGrid sí depende del TDataSet asociado ya que sólo "cargará" los registros que le "envíe" el DataSet asociado.

Me he explicado mejor ahora? :p

donald shimoda 11-09-2008 17:53:29

Cita:

Empezado por ninguno (Mensaje 313554)
Me he explicado mejor ahora? :p

Claro amigo, clarísimo, aunque incorrecto. ;)

En ambos casos, QuantumGird o Dbgrid, o el que sea grid, cargaron los datos que le proporcione el dataset, ni mas ni menos. Si el clientdataset esta configurado para traer de a 20 registros, asi sera porque el quantumgrid no puede gobernar el conjunto de datos del clientdataset, se entiende?

Saludos.

ninguno 11-09-2008 18:35:43

Hola

Cita:

Empezado por donald shimoda (Mensaje 313562)
En ambos casos, QuantumGird o Dbgrid, o el que sea grid, cargaron los datos que le proporcione el dataset, ni mas ni menos. Si el clientdataset esta configurado para traer de a 20 registros, asi sera porque el quantumgrid no puede gobernar el conjunto de datos del clientdataset, se entiende?

La verdad es que no lo he probado, pero ¿estás seguro de eso? Yo creo que las QuantumGird le irán pidiendo registros al Dataset hasta llegar al Eof (de otra manera no podrían hacer ordenaciones ni filtrados ni nada), por lo que dará lo mismo cómo esté éste configurado (repito, creo ya que no lo he probado). En cambio, el DBGrid sólo le pedirá al Dataset los registros que necesite hasta llenarse de datos.

maeyanes 11-09-2008 18:40:39

Hola...

Cita:

Empezado por ninguno (Mensaje 313580)
Hola
La verdad es que no lo he probado, pero ¿estás seguro de eso? Yo creo que las QuantumGird le irán pidiendo registros al Dataset hasta llegar al Eof (de otra manera no podrían hacer ordenaciones ni filtrados ni nada), por lo que dará lo mismo cómo esté éste configurado (repito, creo ya que no lo he probado). En cambio, el DBGrid sólo le pedirá al Dataset los registros que necesite hasta llenarse de datos.

El QuantumGrid nunca va a pedir más datos que los que le devuelve el DataSet... ahora, si usas la propiedad GridMode, entonces este se comporta como un grid normal, pidiendo al DataSet solo los datos que va a mostrar, pero como bien dicen, todas las opciones extras que tiene (ordenamiento, agrupación, totales, etc...) ya no son automáticas...



Saludos...

ninguno 11-09-2008 18:55:43

Hola

Pues mira, me ha picado la curiosidad y tenía que probarlo.

Pongo en un formulario una conexión

TDBGrid o TcxGrid -> TDataSource -> TClientDataSet -> TDataSetProvider -> TTable

El TTable configurado como:
- DataBaseName = DBDEMOS
- TableName = customer.db

El TClientDataSet como:
- PacketRecords = 10

El TDBGrid o TcxGrid lo suficientemente pequeños como para que no quepan más de 10 registros.

Pongo un TEdit (para sacar el resultado de la prueba) y un TButton con el siguiente código:

Código Delphi [-]
  ClientDataSet1.Open;
  Edit1.Text := IntToStr(ClientDataSet1.RecordCount)

Resultado de la prueba:
- con TDBGrid: me marca 10 registros
- con TcxGrid: me marca 55 registros

Como suponía, el TcxGrid va pidiendo registros al TClientDataSet hasta llegar a Eof, por lo que NO se comportan de la misma manera. Uno depende directamente del DataSet y el otro "pasa" del DataSet pidiéndole todos los datos.

donald shimoda 11-09-2008 19:16:09

Cita:

Empezado por ninguno (Mensaje 313580)
La verdad es que no lo he probado, pero ¿estás seguro de eso?

Como que me llamo Pedro Navajas. :p

donald shimoda 11-09-2008 19:18:17

Cita:

Empezado por ninguno (Mensaje 313590)
Como suponía, el TcxGrid va pidiendo registros al TClientDataSet hasta llegar a Eof, por lo que NO se comportan de la misma manera. Uno depende directamente del DataSet y el otro "pasa" del DataSet pidiéndole todos los datos.

Desactiva fetchondemand y veras que hace...;)

Willo 11-09-2008 20:01:45

Se ha generado una buena discusion al respecto;

Pero finalmente la experiencia muestra una notable diferencia en velocidad de respuesta, entre Quantum y el grid usamos.

CRdbgrid (de DEVART -antes corelab-) "carga" hasta 20 veces mas rapido en una ventana que muestra 20 registros de un tabla en MySQL que contiene 247,000; que la misma pantalla usando Quantum.

Ahora bien, CRdbgrid usa los filtros hasta que el usuario los "confirma" y segun vi Quantum va "filtrando" la informacion conforme se teclea el filtro); las ordenaciones son mas rapidas en quantum que en CRdbgrid, pero no mucho....

ninguno 11-09-2008 20:14:53

Hola

Cita:

Empezado por donald shimoda (Mensaje 313606)
Desactiva fetchondemand y veras que hace...;)

Hombre, normal, pero es que entonces estás forzando a que los paquetes de registros tengas que requerirlos tú por código mediante el método GetNextPacket. Es decir, un TDBGrid tampoco podrá llegar a tener nunca todos los registros del dataset si no es explícitamente mediante código, cosa que no pasa si esta propiedad está activada.

En fin, que algunos vemos el vaso medio lleno y otros medio vacío ;)

ninguno 11-09-2008 20:17:17

Hola

Cita:

Empezado por Willo (Mensaje 313627)
....segun vi Quantum va "filtrando" la informacion conforme se teclea el filtro)....

Bueno, esto es configurable, puedes hacer que se realice el filtrado a medida que escribes o bien al aceptar lo escrito. Lo que no recuerdo cual era la propiedad (si quieres puedo mirar de buscártela) :)


La franja horaria es GMT +2. Ahora son las 08:12:01.

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