Page 1 of 1

Creación de índices

Posted: Tue Jul 03, 2012 9:45 am
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

Re: Creación de índices

Posted: Tue Jul 03, 2012 12:22 pm
by salamandra
Hi rafael :)
Take a look at this working sample.
perhaps could solve your problem
Test.rar
(691.43 KiB) Downloaded 445 times
[]´s Salamandra.

Re: Creación de índices

Posted: Wed Jul 04, 2012 8:10 am
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

Re: Creación de índices

Posted: Wed Jul 04, 2012 9:54 pm
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

Re: Creación de índices

Posted: Thu Jul 05, 2012 1:22 am
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 327 times
[]´s Salamandra

Re: Creación de índices

Posted: Sun Jul 15, 2012 5:30 pm
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