Open index error
Esta ocorrência é reproduzida quando tentamos abrir um determinado arquivo de índice inexistente, ou não foi possível o acesso ao arquivo especificado, através das funções DBSetIndex() e/ou OrdListAdd().
Verifique se o arquivo especificado realmente existe na RDD especificada antes de abrí-lo, se o índice foi criado realmente a partir da tabela sob a qual o mesmo está sendo aberto.
Informações Adicionais: c-tree
Quando utilizamos a RDD c-tree, as informações sobre a existência e chaves dos índices permanentes são guardadas no header da tabela c-tree, inclusive entre elas o path completo da própria tabela no disco. De modo que, um índice permanente criado para uma tabela c-tree somente é compatível com a tabela que deu origem a este índice, sendo ambos abertos em seu path original de criação.
Ao copiar, por exemplo, um arquivo TESTE.DTC, e junto com ele o seu índice permanente TESTE.CDX, criados originalmente no path C:\Ap_data , para uma outra pasta, por exemplo, C:\Ap_Data\teste, o índice nesta nova pasta deixa de ser compatível com a tabela. Logo, quando a tabela TESTE é aberta na nova pasta, as informações de índice registradas no header da tabela são apagadas (vide mais detalhes sobre comportamento de índices com c-tree, sobre alteração no comportamento de rebuild), e o índice físico existente neste path não é apagado, porém ele não é mais compatível com a tabela TESTE no path novo. Se, após abrir a tabela TESTE no path novo, o programa executar a função DBSetIndex() e/ou OrdListAdd() para tentar abrir este índice para esta tabela, a aplicação será abortada com esta ocorrência de erro fatal.
Portanto, lembre-se de: Ao copiar tabelas c-tree para outros diretórios, não copie os índices criados para as tabelas originais, pois eles só são válidos no diretório onde foram criados.
Exemplo da ocorrência de erro
/*-------------------------------------------------------ERRO THREAD (user, SERVER) 04/10/2005 11:32:13 Stack :Open index error: d:\ap7_data\ap_test\advpltests_top_ctree\sigaadv\sigamat.ind on NEWSM0(APLIB100.PRW) 17/08/2005 line : 836[build:7.00.050929A][environment: advpltests_Top_ctree][thread 4036]Called from OPENSM0(APLIB100.PRW) 17/08/2005 line : 860Called from NEWEMPR(APLIB090.PRW) 17/08/2005 line : 420Called from VALSENHA(APLIB090.PRW) 17/08/2005 line : 2194Called from {|| ( CURSORWAIT(), OPSW:OGET:ASSIGN(), OPSW:OGET:UPDATEBUFFER(), LSENHA := VALSENHA(CPSW,@AUSUARIO,@OPSW,@AEMPRX,@OCBX,@CEMPRFIL,CNOME,ACONFIG,@NERROS,@ONOME,@AAMB,AAMBAUX,@OCBXAMB,CAMB), MSSAUDACAO(LSENHA), CEMPRESA:=CNUMEMP, CURSORARROW(), IF(LSENHA,EMPROK(CEMPRESA),), LSENHA)}(APLIB090.PRW) line : 226Called from line : 0Called from GETSENHA(APLIB090.PRW) 17/08/2005 line : 287Called from ABERTURA(APLIB090.PRW) 17/08/2005 line : 71Called from {|| (HLPTXT2SPF(), ABERTURA(OAPP:OMAINWND), IF(SELF:BAPPINIT <> NIL,EVAL(SELF:BAPPINIT),) ) }(APLIB000.PRW) line : 352Called from line : 0Called from MSAPP:RUNAPP(APLIB000.PRW) 17/05/2005 line : 358Called from SIGAFIN(APLIB000.PRW) 17/05/2005 line : 826-------------------------------------------------------*/