clase para indexar

clase para indexar

Postby Daniel Garcia-Gil » Wed Oct 08, 2008 2:26 am

recientemente publicaron un tema sobre una funcion para indexar, y se me ocurrio compartir con la comunidad una pequena clase que ahorra un poco de tiempo en esa tarea, aunque sencilla algunas veces hasta fastidiosa.
solo hay que indicar los archivos a indexar con los campos y tag para generar los indices, realmente lo he probrado solo para los NTX y CDX, esta configurada para trabajar solo con esos dos, pero facilmete se puede incluir otros, mirando las clase se daran cuenta que es muy facil hacerlo.
aqui les dejo un link para la descarga si hay alguno que le interese, si no solo serviria que la probaran y hasta les podria servir de arranque para generar algo mejor (siempre hay algo mejor) las sugerencias tambien estan abiertas...
el link incluye, la clase, el archivo .CH, un programa ejemplo y varias dbfs para probar
http://www.box.net/shared/asbfjyh6ic
Last edited by Daniel Garcia-Gil on Thu Oct 09, 2008 7:25 pm, edited 1 time in total.
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby Carlos Mora » Wed Oct 08, 2008 5:34 am

Hola McFox,

tu aporte es muy interesante, yo hago algo bastante parecido.

Si me permites una sugerencia, yo haría un pequeño cambio en el comando que define el indice. Lo que escribes como :
Code: Select all  Expand view  RUN
      ADD TAG oCdx DBF "part003" TAG { {"codigo","partno"} }


lo escribiría como
Code: Select all  Expand view  RUN
           ADD INDEX  TO DBF "part003" TAG "Codigo" KEY partno FOR !deleted() OF oCdx


es decir:
1) añadir la posibilidad de poner filtros en los índices
2) La razón de ser de los comandos es ocultar la complejidad de la implementación de una solución, por lo que habría que evitar el uso de arrays en la declaración y buscar que el comando sea lo mas IMPERATIVO y lo menos DECLARATIVO posible. Creo que es una de las cosas más importante que tenemos en el lenguaje xBase y en Harbour en particular.

Coménta cualquier novedad así vamos puliendo nuestros propios diseños. Hace tiempo que vengo pensando en hacer lo que en Delphi es un DataModule, que es un modulo donde estan definidos todas las tablas, indices y relaciones del programa.

Un saludo,

Carlos.

PD: Alguien vendrá a la Simo en noviembre?
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Postby Daniel Garcia-Gil » Wed Oct 08, 2008 11:26 am

lo escribiría como
Código:

ADD INDEX TO DBF "part003" TAG "Codigo" KEY partno FOR !deleted() OF oCdx



Muchas gracias, es una muy buena suguerencia, realmente es lo que quiero, leer opiniones, pense en hacer algo muy parecido (casi igual), el problema que me encontre, fue que tendria que hacer un comando ADD INDEX por cada TAG por cada DBF, mientras que de la forma que lo coloque con un solo comando puedo agregar todos los TAG para 1 DBFs, es decir, si tengo una DBF con 5 TAG tengo que utilizar 5 ADD INDEX, pero tienes razon igual tendria que poner todos los TAG, seria mas comprensible hacerlo uno por uno lo que podria hacer es que aceptara ARRAY o LITERALES en los TAG y en los KEY.

añadir la posibilidad de poner filtros en los índices


perfecto, hoy hacemos esos cambios...
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby Carlos Mora » Wed Oct 08, 2008 12:05 pm

Si quieres poner en una sola línea todos los TAGS se podría hacer:

Code: Select all  Expand view  RUN

   ADD INDEX TO DBF "part003" ;
      TAG "Codigo" KEY partno FOR !deleted() , ;
      TAG "Nombre" KEY partdesc FOR !deleted() , ;
      TAG "FecAlta" KEY partAdded FOR !deleted() ;
      OF oCdx



lo que mantiene la legibilidad. Eso se puede hacer, mira como está definido el comando 'SET RELATION'

Un saludo,

Carlos.
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Postby karinha » Wed Oct 08, 2008 12:35 pm

Hola, porque me genera este erro?

Code: Select all  Expand view  RUN
Aplicacao:
===========
   Caminho(Path): C:\LIXO\cdxmeter\EJEMPLO.exe (32 bits)
   Tamanho: 1,468,928 bytes
   Hora Inicial: 0 hours 0 mins 4 secs
   Ocorrencia de Erro: 10/08/08, 09:32:23
   Descricao do Erro: Error BASE/1005  Message not found: TBUTTONBMP:_CPOSTEXT

Chamada da Pilha:
=================
   Chamada De: TBUTTONBMP:ERROR(175)
   Chamada De: (b)HBOBJECT:HBOBJECT(105)
   Chamada De: TBUTTONBMP:MSGNOTFOUND(0)
   Chamada De: TBUTTONBMP:_CPOSTEXT(167)
   Chamada De: CDXMETER:COMPUESTO(432)
   Chamada De: CDXMETER:ACTIVATE(251)
   Chamada De: EJEMPLO2(96)
   Chamada De: (b)INICIO(14)
   Chamada De: TMENU:COMMAND(407)
   Chamada De: TWINDOW:COMMAND(932)
   Chamada De: TWINDOW:HANDLEEVENT(0)
   Chamada De: _FWH(3128)
   Chamada De: WINRUN(0)
   Chamada De: TWINDOW:ACTIVATE(881)
   Chamada De: INICIO(24)


Estoy usando FIVEWIN 2.7 FOR XHARBOUR.

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7860
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby Daniel Garcia-Gil » Wed Oct 08, 2008 1:25 pm

la version de FWH que tienes no soporta la posicion del texto en los botones, ya tengo la solucion a tu problema, estoy añadiendo los cambios que recomendo Carlos y ya publico la nueva version
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby karinha » Wed Oct 08, 2008 2:12 pm

mcfox wrote:la version de FWH que tienes no soporta la posicion del texto en los botones, ya tengo la solucion a tu problema, estoy añadiendo los cambios que recomendo Carlos y ya publico la nueva version


Gracias, mcfox.

En la espera.

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7860
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby Daniel Garcia-Gil » Thu Oct 09, 2008 5:59 am

Ya esta disponible la clase nuevamente con los cambios suguerios por CARLOS MORA, disculpen la demora... :wink:
Gracias Carlos por las sugerencias, espero cumpla las espectativas de las personas, es una clase sencilla pero hace lo suyo
el link de descargas...
http://www.box.net/shared/asbfjyh6ic
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 47 guests