Creación de índices

HMG en Español

Moderator: Rathinagiri

Post Reply
arroya2
Posts: 172
Joined: Thu Aug 06, 2009 7:16 am

Creación de índices

Post by arroya2 »

Hola amigos.

He creado la siguiente función para crear los índices de ordenación de la Base de Datos Clientes.
El problema es que esta función es llamada desde otras y en el momento de ejecutarse me lanza el error de que no existe la variable n.
Evidentemente n es una variable local de la función ActualizarBases2 y no es visible desde las funciones que llaman a la función ActualizarBases2.

Code: Select all

#Include 'hmg.ch'

* ---------------------------------------------------------------------------- *

* ---------------------------------------------------------------------------- *
Function ActualizarBases2()

Local n:=1										  // Variable auxiliar

If !File('Clientes.Dbf')						// Si no existe, creo el fichero de Clientes
	CreaCli()										// Esta función crea la Base de Datos de Clientes (no está incluida en este ejemplo)
EndIf

If !File('Clientes.Cdx')						// Creo un índice con un Tag por cada campo de la Base de Datos
	USE 'Clientes' SHARE NEW

	For n=1 To FCount()
			INDEX ON Clientes->(FieldName(n)) TAG FieldName(n) TO 'Clientes.Cdx'
	Next
EndIf

Return Nil
¿Cómo se puede hacer para que esto no ocurra y la función ActualizarBases2 no guarde la variable n, sino su valor en tiempo de compilación?

Saludos
Rafael Pérez
User avatar
salamandra
Posts: 311
Joined: Thu Jul 31, 2008 8:33 pm
DBs Used: DBF, MySQL, SQL
Location: Brazil

Re: Creación de índices

Post by salamandra »

Hi rafael :)
Take a look at this working sample.
perhaps could solve your problem
Test.rar
(691.43 KiB) Downloaded 417 times
[]´s Salamandra.
There is one time in which is crucial awakening. That time is now. ( Buddha )
arroya2
Posts: 172
Joined: Thu Aug 06, 2009 7:16 am

Re: Creación de índices

Post by arroya2 »

Translated by Google:

Hi Salamander.

Your solution works for me perfectly, except when the field is a date. I do as follows:

Code: Select all

INDEX ON DTOS (& (FieldName (n))) TAG & (FieldName (n)) TO 'tab1001a.Cdx'
And the program gives me the error that there is no variable "n".

How do I fix this?

Thanks
Rafael Pérez
Hola Salamandra.

Tu solución me funciona perfectamente, excepto cuando el campo es de tipo fecha. Yo lo hago de la siguiente forma:

Code: Select all

INDEX ON Dtos(&(FieldName(n))) TAG &(FieldName(n)) TO 'tab1001a.Cdx'
Y el programa me lanza el error de que no existe la variable "n".

¿Como soluciono esto?

Gracias
Rafael Pérez
paimar
Posts: 64
Joined: Wed May 23, 2012 8:52 pm

Re: Creación de índices

Post by paimar »

No se si te podre ayudar pero y si haces que N sea publica y guardas el valor en un campo para luego restaurarlo? O igual digo una tonteria...


arroya2 wrote:Hola amigos.

He creado la siguiente función para crear los índices de ordenación de la Base de Datos Clientes.
El problema es que esta función es llamada desde otras y en el momento de ejecutarse me lanza el error de que no existe la variable n.
Evidentemente n es una variable local de la función ActualizarBases2 y no es visible desde las funciones que llaman a la función ActualizarBases2.

Code: Select all

#Include 'hmg.ch'

* ---------------------------------------------------------------------------- *

* ---------------------------------------------------------------------------- *
Function ActualizarBases2()

Local n:=1										  // Variable auxiliar

If !File('Clientes.Dbf')						// Si no existe, creo el fichero de Clientes
	CreaCli()										// Esta función crea la Base de Datos de Clientes (no está incluida en este ejemplo)
EndIf

If !File('Clientes.Cdx')						// Creo un índice con un Tag por cada campo de la Base de Datos
	USE 'Clientes' SHARE NEW

	For n=1 To FCount()
			INDEX ON Clientes->(FieldName(n)) TAG FieldName(n) TO 'Clientes.Cdx'
	Next
EndIf

Return Nil
¿Cómo se puede hacer para que esto no ocurra y la función ActualizarBases2 no guarde la variable n, sino su valor en tiempo de compilación?

Saludos
Rafael Pérez
Gipuzkoa - ESPAÑA
User avatar
salamandra
Posts: 311
Joined: Thu Jul 31, 2008 8:33 pm
DBs Used: DBF, MySQL, SQL
Location: Brazil

Re: Creación de índices

Post by salamandra »

Hi Rafael :) ,
Please, take a look at this (new and slightly different ) working sample.
That´s the way i use to create index files :)
You can define the array specifying the data (tables, indexes, tags, orderbags, etc.)
or alternatively you can load this data from a external table (best, IMHO) ;)
Test.rar
(789.44 KiB) Downloaded 302 times
[]´s Salamandra
There is one time in which is crucial awakening. That time is now. ( Buddha )
arroya2
Posts: 172
Joined: Thu Aug 06, 2009 7:16 am

Re: Creación de índices

Post by arroya2 »

Hola amigos.

Ya lo he solucionado, muchas gracias por vuestra ayuda, me ha sido de gran ayuda.

Saludos
Rafael Pérez
Translated by Google:
Hello friends.

I've already solved, thank you very much for your help, I have been very helpful.

Regards
Rafael Perez
Post Reply