Hola tengo un problema curioso con un indice, hay un rango de registros en torno a 140-160 en que al añadir el siguiente me da un error de harbour. En tiempo de ejecución me ha dado uno de los siguientes errores.
9021 - Wrong parent key
9021 - Index Corrupted
9021 - Free Space calculated wrong
Versión: xHarbour build 0.99.71
Compiler: Borland C++ 5.5.1
He probado con xHarbour 1.00 y se produce el error en el mismo punto.
He simplificado el código al maximo para mostrar un ejemplo del error
******************************************************
FUNCTION Main
Local cTemp := "MYFILE.DBF"
Local nI := 1
SET DATE TO FRENCH
SET EPOCH TO 1960
SET CENTURY ON
SET DELETED ON
REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" )
REQUEST HB_LANG_ES
HB_LANGSELECT("ES")
IF FILE("MYFILE.CDX")
ERASE MYFILE.CDX
ENDIF
IF FILE("MYFILE.DBF")
ERASE MYFILE.DBF
ENDIF
DBCreate(cTemp,{ {"COD","C",10,0} , {"DES","C",240,0}} )
USE (cTemp) EXCLUSIVE NEW ALIAS TEMP
FOR nI = 1 TO 150 //137 TO 161
DBAppend()
NEXT
INDEX ON TEMP->COD TAG COD TO MYFILE
INDEX ON TEMP->DES TAG DES TO FILE
FOR nI = 1 TO 250
DBAppend()
NEXT
RETURN NIL
***************************************************
Da el siguiente error
Page = 0xa00, calc=-205, iFree=35, req=3, keys=151, keyLen=240
Error irrecuperable 9201: hb_cdxPageLeafEncode: FreeSpace calculated wrong!.
Called from DBAPPEND(0)
***************************************************
He estado buscando información sobre la longitud de las claves de indice
pero no he encontrado gran cosa al respecto y la verdad ando un poco
desorientado, con menos de 137 en el ejemplo funciona correctamente y con más de 161 también, se agradece cualquier información al respecto.
Error Indice 9021
-
- Posts: 1
- Joined: Thu Apr 10, 2008 11:07 am
Error Indice 9021
Saludos,
Alberto Torres
Alberto Torres
//-> Intente ahora... Fivewin, és fantastico!!!
Code: Select all
#include "FiveWin.ch"
FUNCTION Main()
LOCAL cTemp := "MYFILE.DBF"
LOCAL nI := 1
SET DATE TO FRENCH
SET EPOCH TO 1960
SET CENTURY ON
SET DELETED ON
REQUEST DBFCDX, DBFFPT
RDDSETDEFAULT( "DBFCDX" )
REQUEST HB_LANG_ES
HB_LANGSELECT("ES")
IF FILE("MYFILE.CDX")
ERASE MYFILE.CDX
ENDIF
IF FILE("MYFILE.DBF")
ERASE MYFILE.DBF
ENDIF
IF .NOT. FILE("MYFILE.DBF")
MsgRun( "Creacion de Registros...", ;
"Por Favor, Espera!" , ;
{ || DBCreate( cTemp, { { "COD", "C", 010, 000 }, ;
{ "DES", "C", 240, 000 } } ) } )
ENDIF
DbCloseAll()
USE ( cTemp ) EXCLUSIVE NEW
FOR nI = 1 TO 150 //137 TO 161
DBAppend()
REPLACE COD WITH STR(nI)
REPLACE DES WITH [FIVEWIN THE BEST OF THE WORLD]
NEXT
//
INDEX ON FIELD->COD TAG CODIGO TO MYFILE
//
INDEX ON FIELD->DES TAG DESCR TO MYFILE
//
GO TOP
BROWSE()
FOR nI = 151 TO 450
DBAppend()
REPLACE COD WITH STR(nI)
REPLACE DES WITH [FIVEWIN, EL MEJOR DEL MUNDO!! YES!]
NEXT
SET ORDER TO 1
GO TOP
BROWSE()
RETURN NIL
João Santos - São Paulo - Brasil