Page 1 of 1

Index on str

Posted: Fri May 18, 2007 3:49 pm
by Sebastián Almirón
Hola a todos.

Tengo un problema de locos que quizás ya se haya comentado en este foro, pero que no lo veo por ningún lado.

Uso una dbf con indices cdx y le hago:
index on str(numero,8) TAG usuwebnu

El caso es que al utilizarla y hacerle un go bottom, se me va a un registro con número 10043 cuando existe otro registro con numero 99999000

Si el indice lo creo con FoxPro con el mismo formato va bien.

¿ Que me he perdido de pasar de 16 a 32 bits ?

Saludos

Posted: Fri May 18, 2007 3:51 pm
by Sebastián Almirón
Bueno el simbolo ese tan mono es coma ocho cierraparentesis.

Posted: Fri May 18, 2007 6:10 pm
by Antonio Linares
Sebastián,

Estás usando Harbour ó xHarbour ?

Podrias proporcionar un ejemplo pequeño y autocontenido que reproduzca el comportamiento erróneo sin usar FWH ? gracias

Posted: Sun May 20, 2007 2:33 am
by sysctrl2
use clientes new shared
cAlias := alias()
index on strzero( field->numero, 7 ) tag 1 TO (cAlias)

dbselectArea(cAlias)
dbgobottom()
browse()

nNnumero := 1950

dbseek( strzero(nNumero, 7) )
browse()





saludos.

Posted: Sun May 20, 2007 8:20 am
by Antonio Linares
César,

Ese ejemplo no es el caso que comenta Sebastián.

Aqui hay un ejemplo completo, pero funciona bien:

Code: Select all

function Main()

   DBCreate( "test.dbf", { { "code", "N", 8, 0 } } )

   USE test
   INDEX ON Str( field->code, 8 ) TO test

   APPEND BLANK
   field->code = 99999000

   APPEND BLANK
   field->code = 5555

   APPEND BLANK
   field->code = 10043

   GO TOP
   MsgInfo( field->code )

   GO BOTTOM
   MsgInfo( field->code )

   USE

return nil

Posted: Mon May 21, 2007 9:28 am
by Sebastián Almirón
Hola Antonio.

Ya está solucionado.
El problema estaba en que se me había olvidado borrar antes el indice CDX.

Gracias y perdón por las molestias.

Posted: Mon May 21, 2007 9:38 am
by Antonio Linares
Sebastián,

me alegro de que esté solucionado :-)