SET INDEX TO (problemas)-SOLUCIONADO
Posted: Mon Jul 12, 2010 10:17 am
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:
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?
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
Alguien sabe por donde ir para encontrar la solución?