FoxPro/Visual FoxPro - error 112 al indexar

 
Vista:

error 112 al indexar

Publicado por alexcoinc (450 intervenciones) el 18/01/2008 23:16:48
Cree un archivo temporal asi:

noarchi='archivo'
create table &noarchi. free (periodo c(7),fecha d(8),factura n(10),entidad c(3),codigo c(10),generico c(35),cantidad n(10),;
numero_pro n(10),valor1 n(14,4),valor2 n(14,4),valor3 n(14,4),valor4 n(14,4),valor5 n(14,4),;
vlr_unidad n(14,4),cedula c(15),apellido_1 c(30),apellido_2 c(30),nombre c(30))


Luego lo abro y lo trato de indexar asi:

INDEX ON allt(apellido_1)+allt(apellido_2)+allt(nombre)+allt(str(factura))+allt(codigo) TO C:TEMPORALl22


Me sale un error: "La longitud de clave no es valida"

Consulté y esto ocurre cuando la clave es 0 o mayor de 254. ESTE CREO QUE NO ES EL CASO .

Entonces donde está el error y cual es su solución ..

Les agradezco de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:error 112 al indexar

Publicado por Plinio (7841 intervenciones) el 19/01/2008 03:59:35
me llama la atencion "C:TEMPORALl22 "
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:error 112 al indexar

Publicado por Luighi (105 intervenciones) el 19/01/2008 05:29:23
Longitud de clave no válida. (112)

Ha especificado una longitud incorrecta para la clave de índice.
La longitud de una clave para un índice .IDX debe tener de 1 a 100 caracteres.
La longitud de una clave para un índice .CDX debe estar comprendida entre 1 y 254 caracteres.

Reglas de FoxPro/Visual Foxpro

Resulta que en algún registro el resultado de la clave de índice que especificas:
allt(apellido_1)+allt(apellido_2)+allt(nombre)+allt(str(factura))+allt(codigo)
es: 0

Eso sucede "o porque tienes al menos un registro en blanco o porque la tabla está vacía" y como el campo factura es numérico el resultado de la expresión será siempre el caracter: 0
y con longitud: 1

Y según la regla para los .IDX no está permitido la longitud de clave de 1 caracter

Personalmente no uses jamás indices .IDX
Es mejor usar .CDX

Así:
INDEX ON <Clave> TAG <NombreDeEtiquetaCDX>

Hazlo siempre y no tendrás ningún inconveniente
No lo digo yo
Lo dice el Zorro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:error 112 al indexar

Publicado por alexcoinc (450 intervenciones) el 19/01/2008 16:38:04
Tu explicación de la norma del indexamiento es muy clara y te la agradezco, pues no la conocía.

Pero me queda una dudita que espero me la termines de aclarar si eres tan amable.

En una rutina de un reporte, la tabla que estoy creando es una tabla temporal (es decir para hacer un proceso y eso es todo); ahora bien el indice obviamente tambien es temporal; es decir ese que formo con:

allt(apellido_1)+allt(apellido_2)+allt(nombre)+allt(str(factura))+allt(codigo)

Ahora bien y asi las cosas, como va la instrucción?......., asi?

INDEX ON allt(apellido_1)+allt(apellido_2)+allt(nombre)+allt(str(factura))+allt(codigo) TAG alfa.cdx

donde alfa.cdx es el nombre de la etiqueta .... Si es asi, esto me genera un error :

El comando contiene una frase o palabra clave no reconocida.

Te agradezco nuevamente tu guía.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar