SELECT 0
IF ! UseSoDbf( cDbfName )
RETURN .F.
ENDIF
FOR nCont = 1 TO Len( acIndice )
GrafTempo( "Criando " + acIndice[ nCont, 1 ] + IndexExt() )
SET INDEX TO // para usar for
GOTO TOP // para usar for
xCampo := acIndice[ nCont, 2 ]
IF Len( acIndice[ nCont ] ) == 2
INDEX ON &xCampo TAG ( ToTag( acIndice[ nCont, 1 ] ) ) TO ( cDbfName ) EVAL GrafInd()
ELSEIF Len( acIndice[ nCont ] ) == 3
INDEX ON &xCampo TAG ( ToTag( acIndice[ nCont, 1 ] ) ) TO ( cDbfName ) FOR &( acIndice[ nCont, 3 ] ) EVAL GrafInd()
ELSEIF Len( acIndice[ nCont ] ) == 4
INDEX ON &xCampo TAG ( ToTag( acIndice[ nCont, 1 ] ) ) TO ( cDbfName ) DESCEND EVAL GrafInd()
ELSEIF Len( acIndice[ nCont ] ) == 5
INDEX ON &xCampo TAG ( ToTag( acIndice[ nCont, 1 ] ) ) TO ( cDbfName ) UNIQUE EVAL GrafInd()
ENDIF
SET INDEX TO
//nRecOk += LastRec()
NEXT
USE
chmodFile( cDbfName + IndexExt() )
A rotina é sempre essa.
Apesar do chmodFile(), é no Windows.
Acrescentei o nome do arquivo de Ãndice depois, pra ver se fazia diferença.
E Acrescentei o ToTag() pra não considerar path (a rotina vale pra IDX e CDX)
Dois itens do array
IndexDbf( "B0600", "COBR B0600 Orcamento Obras", "COBR" )
IndexInd( "B06001", "Cod_Emp + Cod_Pi" )
IndexInd( "B06002", "Nome" )
IndexInd( "B06003", "Cod_Cli" )
IndexDbf( cPathDbf + "B2500", "PRD1 Produto Principal", "PRD1" )
IndexInd( cPathDbf + "B25001", "Cod_Pro" )
IndexInd( cPathDbf + "B25002", "Nome" )
IndexInd( cPathDbf + "B25003", "Substr( Nome, 21, 90 )" )
A única diferença é o path no nome do arquivo
é um único array com tudo, tudo no mesmo fonte.
Só sobra comportamento diferente com path.