Sobre Grid/TBrowse/skipBlock

HMG en Español

Moderator: Rathinagiri

jpuntoapunto
Posts: 36
Joined: Sat Jun 01, 2013 6:50 pm

Sobre Grid/TBrowse/skipBlock

Post by jpuntoapunto »

Hola.

Sigo intentando pasar mi antigua aplicacion Clipper a HMG pero me encuentro con problemas que intento resolver
por mi mismo pero no consigo, por eso recurro a vosotros que llevais mas tiempo con este lenguaje, por si me podeis
echar una mano.

El caso es que en Clipper utilizaba mucho la clase TBrowse junto con skipBlock para mostrar/filtrar bases de datos DBF.
Las bases de datos estan indexadas por el campo que se desea filtrar, con los cual el filtrado de los registros que se
quieren mostrar es rapidísimo (incluso con DBF de mas de 2 millones de registros).

Bueno, pues yo quería y creía que podría hacer lo mismo con el control GRID, pero no veo la forma. No se puede hacer
con un FILTER al DBF, que sería muy sencillo, ya que este solia ser muy muy lento para gran cantidad de registros.

No se si me he explicado correctamente.

Resumiendo, lo que quiero conseguir es hacer un Grid a una base de datos DBF directamente, pero que solo se muestren
un ambito de registros ordenados por un campo. Ejemplo: mostrar solo los que campo PEDIDO=10. Esto con TBrowse/skipBlock
funcionaba muy bien y rápido, pero con HMG no lo veo.

He buscado por el foro pero no he encontrado nada.

Gracias por vuestra atencion.
Saludos.
J.A.
EduardoLuis
Posts: 682
Joined: Tue Jun 04, 2013 6:33 pm
Location: Argentina

Re: Sobre Grid/TBrowse/skipBlock

Post by EduardoLuis »

Hi Jpunto

I attach a sample that may be usefull for your request.-
With regards
Eduardo

Hola Jpunto

Te adjunto un ejemplo que creo te resultara util.-
Cordialmente
Eduardo
Attachments
sample_x.zip
(7.22 KiB) Downloaded 441 times
jpuntoapunto
Posts: 36
Joined: Sat Jun 01, 2013 6:50 pm

Re: Sobre Grid/TBrowse/skipBlock

Post by jpuntoapunto »

Hola Eduardo.

Gracias por contestar. Veo que has entendido mi problema.
La verdad es que no entiendo como Grid no lleva alguna propiedad o metodo que permita un filtrado sencillo de registro.

Voy a investigar el ejemplo que has enviado, a ver que puedo sacar en claro.

Muchisimas gracias.
Saludos.
J.A.
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: Sobre Grid/TBrowse/skipBlock

Post by andyglezl »

Hola
Este post habla sobre filtros, quizà te pueda servir...

viewtopic.php?f=5&t=4173&p=39392&hilit=dbeval#p39392
Andrés González López
Desde Guadalajara, Jalisco. México.
jpuntoapunto
Posts: 36
Joined: Sat Jun 01, 2013 6:50 pm

Re: Sobre Grid/TBrowse/skipBlock

Post by jpuntoapunto »

andyglezl wrote:Hola
Este post habla sobre filtros, quizà te pueda servir...

viewtopic.php?f=5&t=4173&p=39392&hilit=dbeval#p39392
Voy a darle un vistazo tambien, a ver que encuentro.

Muchas gracias.

Saludos.
J.A.
User avatar
dragancesu
Posts: 920
Joined: Mon Jun 24, 2013 11:53 am
DBs Used: DBF, MySQL, Oracle
Location: Subotica, Serbia

Re: Sobre Grid/TBrowse/skipBlock

Post by dragancesu »

Welcome in HMG

Look sample
Attachments
twotable.zip
(18.76 KiB) Downloaded 405 times
jpuntoapunto
Posts: 36
Joined: Sat Jun 01, 2013 6:50 pm

Re: Sobre Grid/TBrowse/skipBlock

Post by jpuntoapunto »

dragancesu wrote:Welcome in HMG

Look sample
OK thank you very much. Another example to study.

Saludos.
J.A.
jpuntoapunto
Posts: 36
Joined: Sat Jun 01, 2013 6:50 pm

Re: Sobre Grid/TBrowse/skipBlock

Post by jpuntoapunto »

Hola de nuevo.

Pues efectivamente, gracias a todos vosotros parece que ya he conseguido solucionar el problema utilizando
unos buenos indices, filtros y OrdScope (Como bien indicó EduardoLuis).

Pero os planteo una curiosidad que me ha ocurrido investigando con el lenguaje
Para hacer la pruebas he utilizado una base de datos de unos 50 mil registros.

El caso es que este sencillo GRID (sin filtros ni nada) va terriblemente lento, se hace practicamente inutilizable:

Code: Select all

@ 0,0 GRID GR_FACTCAB ;
    WIDTH 210 HEIGHT 500 ;
    HEADERS {"FACTURA","FECHA"} ;
    WIDTHS {80,100} ;
    ROWSOURCE "fact_fact" ;
    COLUMNFIELDS {"FACT","FECH"}

Sin embargo, este BROWSE (con los mismos datos que el anterior) va muy bien y rápido:

Code: Select all

@ 0,0 BROWSE GR_FACTCAB ;
     WIDTH 210 HEIGHT 500 ;
     HEADERS {"FACTURA","FECHA"} ;
     WIDTHS {80,100} ;
     WORKAREA fact_fact ;
     FIELDS {"FACT","FECH"}
Como podeis ver, el resultado es el mismo, pero el GRID se comporta muchísimo mas lento.
Asi que está claro que solo puedo utilizar el control BROWSE, no hay mas remedio.
Aunque me da la sensación que el control GRID es mas versatil.

Mi curiosidad es saber ¿por qué?. ¿Acaso se utiliza GRID o BROWSE en funcion al tipos de datos utilizados?.

Gracias y saludos.
J.A.
EduardoLuis
Posts: 682
Joined: Tue Jun 04, 2013 6:33 pm
Location: Argentina

Re: Sobre Grid/TBrowse/skipBlock

Post by EduardoLuis »

Hi Jpuntoapunto:

Usually GRID works efficiently (high speed) with arrays and also tables.-
Browse is basically oriented to tables.-

In my case, i use grid for all of them (arrays and tables) and don't appreciate less speed.-
I frequently use filters, so when i refresh grid, it only shows specific matches, and not all database.- This method - for me - its efficient to locate and specific range of matches, f. example: invoices corresponding to March 2016; this way grid shows only this specific range over thousands.- This method increasee speed, something like searching "medical doctor" or "PEREZ" on a phone book.-

Hoping this helps you, with regards.
Eduardo

Hola Jpuntoapunto:

Usualmente GRID trabaja eficientemente (alta velocidad) con arrays y tambien con tablas.-
Browse está basicamente orientado a tablas.-

En mi caso, yo uso grid para todo (arrays y tablas) y no advierto merma en la velocidad.-
Frecuentemente uso filtros, de manera que cuando refresco el grid, solo exhiba los registros coincidentes, y no toda la tabla.- Este metodo - al menos para mi - es totalmente eficaz para localizar un especifico rango de registros coincidentes, por ejemplo: facturación correspondiente a Marzo de 2016; de este modo, el grid muestra un especifico rango de entre miles.- Este metodo incrementa su velocidad, algo similar a buscar "medical doctor" or "PEREZ" on a phone book.-

Espero que esto te ayude. Cordialmente.
Eduardo
jpuntoapunto
Posts: 36
Joined: Sat Jun 01, 2013 6:50 pm

Re: Sobre Grid/TBrowse/skipBlock

Post by jpuntoapunto »

EduardoLuis wrote: Hola Jpuntoapunto:
Usualmente GRID trabaja eficientemente (alta velocidad) con arrays y tambien con tablas.-
Browse está basicamente orientado a tablas.-
En mi caso, yo uso grid para todo (arrays y tablas) y no advierto merma en la velocidad.-
Frecuentemente uso filtros, de manera que cuando refresco el grid, solo exhiba los registros coincidentes, y no toda la tabla.- Este metodo - al menos para mi - es totalmente eficaz para localizar un especifico rango de registros coincidentes, por ejemplo: facturación correspondiente a Marzo de 2016; de este modo, el grid muestra un especifico rango de entre miles.- Este metodo incrementa su velocidad, algo similar a buscar "medical doctor" or "PEREZ" on a phone book.-
Espero que esto te ayude. Cordialmente.
Eduardo
Hola Eduardo.

Eso mismo creia yo, que grid y browse se comportarían igual. Pero, no se por que, a mi no.
Es mas, me ha sorprendido que digas que tu utilizas grid para todo.

He preparado un programa ejemplo con cada uno de los controles y la tabla que he utilizado para la prueba, por si puedes darle un vistazo.
Si pruebas GRID.EXE y BROWSE.EXE verás la diferencia de velocidad bestial.

Lo pongo en un enlace de dropbox ya que no se como adjuntar una archivo aqui, lo siento.

https://www.dropbox.com/s/mp2mwl8fh0zrk ... E.zip?dl=0

Saludos y gracias.
J.A.
Post Reply