SET INDEX TO (problemas)-SOLUCIONADO

Post Reply
User avatar
Andrés González
Posts: 625
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

SET INDEX TO (problemas)-SOLUCIONADO

Post by Andrés González »

Hola Antonio y compañeros. Os planteo un problema que me ha surgido con las nuevas versiones de fivewin. Con xHarbour y las versiones del 2010, no me carga mas de 7 indices seguidos. Si cargo el 8 me da error, pero si este lo cargo en el numero 7 va bien. Si miráis el codigo lo entendereis mejor:

Code: Select all

 

   *    Abre los INDEX          *
   ******************************

   store "" to x_ind1,x_ind2,x_ind3,x_ind4,x_ind5,x_ind6,x_ind7,x_ind8,x_ind9,x_ind10,x_ind11, ;
               x_ind12,x_ind13,x_ind14,x_ind15    // Pone todos los indices en blanco
   x = ascan(v_conf,"[INDEX]",x + y)     // Localiza la palabra [INDEX]
   y = ascan(v_conf,"[",x + 1) - x - 1   // Localiza el proximo [...]
   n_ind = y
 
  for n = 1 to n_ind step 1
      x_temp = "x_ind" + str(n,1)
      M->&X_TEMP = x_path + alltrim(strextract(v_conf[x + n],";",1)) // Rellena los indices que tenemos definidos
     //? M->&X_TEMP Tod correcto veo todos los indices y _ dentro su variable correspondiente
   next

if netuse(x_path + x_base,x_mod,0,v_alias) //Abro la base de datos
    
      //Cargo todos los indices      
      set index to (x_ind1),(x_ind2),(x_ind3),(x_ind4),(x_ind5),(x_ind6),(x_ind7),(x_ind8), ; 
                   (x_ind9),(x_ind10),(x_ind11),(x_ind12),(x_ind13),(x_ind14),(x_ind15)
                    
      set order to v_orden //Hasta aqui todo correcto mientras no sean mas de 7 indices (el 8 no funciona y siguientes no funcionan)
        ? Select()
        ? indexord() //v_orden = indexord() menos cuando llega al 8 que me pone 0
 
Parece que xharbour tiene problemas en las nuevas versiones para cargar todos los indices que tengo por defecto a 15, pero normalmente no cargo mas de 6 o 7. Pero cuando cargo una base de datos com mas de 8 indices, cuando llega al 8 el indexord() me retorna un 0, cuando me tendría que devolver el numero 8. Si en vez de cargarlo en el numero 8 lo cargo en el 7 funciona correctamente. Para versiones antiguas del xharbour funciona bien, pero no con las nuevas. Parece que estas versiones tienen un error en el indice, o algun otro motivo para que no funcione y no cargue ese indice.

Alguien sabe por donde ir para encontrar la solución?
Last edited by Andrés González on Tue Jul 13, 2010 12:33 pm, edited 1 time in total.
Saludos

Andrés González desde Mallorca
User avatar
QAZWSX2K
Posts: 359
Joined: Tue Oct 25, 2005 7:06 pm
Location: Bogota - Caracas

Re: SET INDEX TO (problemas)

Post by QAZWSX2K »

uyy amigo 15 indices y porque tantos, creo que lo maximo que yo llegue a usar serian 4 o 5 cuando usaba NTX, te recomiendo te cambies a CDX y uses los scopes, entiendo que _ dan miedo pero no es uno muy grande y vale la pena, yo a su momento estuve reacio a hacerlo ya que segun la maxima "para que cambiar lo que sirve..." sin embargo lo hice en un par de dias y funciono tal cual antes y ahora estoy en un cambio mas temible que es de CDX a SQL

el cambio es asi, al principio del programa agregas

Request DbfCdx
rddSetDefault( "DBFCDX" )

al momento de crear indices seria
index on campo1 TAG "etiqueta1",
en vez de
index on campo1 TO indice1

y al momento de abrir la tabla solo haces y suponiendo uses esta funcion
DO WHILE .T.
IF NET_USE(SS62,.F.,.1)
DBSETORDER("ETIQUETA1") //O LA ETIQUETAS QUE NECESITES, TODAS SE ACTUALIZAN
DATABASE DOBJ
EXIT
ELSE
LOOP
ENDIF
ENDDO

en vez de
DO WHILE .T.
IF NET_USE(SS62,.F.,.1)
index on &indice1,&indice2,&indice3,&indice4,&indice5,&indice6,&indice7,.....,&indice15
set order to 3 //o el que sea
DATABASE DOBJ
EXIT
ELSE
LOOP
ENDIF
ENDDO
Software especializado para oficinas contables con grandes volumenes de Informacion
Impresion de todos los formularios del Seniat, Dian

alex_patino74@hotmail.com
whatsapp 57+3214777217
User avatar
Andrés González
Posts: 625
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: SET INDEX TO (problemas)

Post by Andrés González »

Gracias por tu respuesta, creo que de momento es imposible realizar el cambio, puesto que son 60 programas que funcionan igual, y supone un esfuerzo muy grande y sobre todo porqué funcionan bien. Ya estoy mirando el tema del sql pero eso lo dejo para después del verano ya que no quiero romperme mucho la cabeza. De todas formas lo extraño es que con las versiones antiguas y el mismo código funciona con todas los indices que quieras. Por cierto con ntx tambien utilizo los escopes y van de maravilla. Por otra parte que haya 15 indices no significa que carge 15 indices, carga solo los indices que no tienen contenido vacío.

Si se te ocurre por donde van los tiros dime cosas, ahora no sé que más investigar o donde poner el problema para saber la respuesta?
Saludos

Andrés González desde Mallorca
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: SET INDEX TO (problemas)

Post by Antonio Linares »

Andrés,

Necesitamos un ejemplo muy simple y autocontenido que demuestre el problema (código Harbour, sin FWH) para enviarlo a la lista de desarrollo de Harbour.

Cuanto antes tengamos el ejemplo, antes se puede enviar y antes nos pondremos todos a solucionarlo :-)

A ver si nosotros podemos reproducirlo aqui,
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
mmercado
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: SET INDEX TO (problemas)

Post by mmercado »

Hola Andrés:

Prueba editando el archivo \Windows\System32\Config.nt

Aumenta el valor mostrado en la línea:

Files=nnn

Luego reinicias Windows.

Es solo una idea, un abrazo.

Manuel Mercado Gómez.
manuelmercado at prodigy dot net dot mx
User avatar
Andrés González
Posts: 625
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: SET INDEX TO (problemas)

Post by Andrés González »

Gracias Antonio mañana miro de intentar reproducir el error, he intentado hoy compilar con la versión harbour, pero me ha dado muchos errores con el ole y lo he dejado para cuando tenga mas tiempo. Igalmente Don Manuel, mañana miro de aumentar el files por si ayuda.
Saludos

Andrés González desde Mallorca
User avatar
Andrés González
Posts: 625
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: SET INDEX TO (problemas)

Post by Andrés González »

Acabo de encontrar el problema, resulta que en el código de las versiones nuevas dos de los indices tenían el mismo nombre. O sea, el indice 2 y el 7 tenían el mismo nombre con distinta indexación. Al realizar el SET ORDER TO 8 y siguientes me daba siempre cero, ya que el programa devuelve siempre 0 una vez que cargaba el indice repetido. Gracias por vuestra ayuda y gracias Antonio, ya que al intentar reproducir el error me he dado cuenta de la duplicación del nombre de los indices. Muchas veces lo más trivial es lo que te trae de cabeza.
Saludos

Andrés González desde Mallorca
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: SET INDEX TO (problemas)-SOLUCIONADO

Post by Antonio Linares »

Andrés,

Me alegro de que haya quedado solucionado :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply