Descrição
DBCreateIndex [AS] - Cria um novo arquivo de índice
|
Sintaxe
| DBCreateIndex( <cNome>, <cExpChave>, <bExpChave>, <lUnico> ) |
Parâmetros
| Par |
Nome |
Tipo |
Descrição |
Default |
Obg |
Ref |
| 01 |
cNome
|
Caracter
|
Indica o nome do arquivo de índice que será criado
|
|
X |
|
| 02 |
cExpChave
|
Caracter
|
Indica a expressão das chaves do índice que será criado na forma de string
|
|
X |
|
| 03 |
bExpChave
|
Bloco de Código
|
Indica a expressão das chaves do índice que será criado na forma executável
|
|
|
|
| 04 |
lUnico
|
Boolean
|
Indica se, verdadeiro (.T.), cria o índice como único; caso contrário, falso (.F.)
|
.F. |
|
|
Retorno
Exemplo
#INCLUDE "TOTVS.CH"
User Function dbCreateIndex()
Local cNomArq := ''
Local cSeconds := "9"+StrZero(Seconds(),5,0)
Local aCampos := {}
Local cIndice := "ZZ1_USER+ZZ1_NOME"
Local cInd01 := GetNextAlias()
aAdd( aCampos, { 'ZZ1_USER' , 'C', TamSX3('ZZ1_USER')[01] , TamSX3('ZZ1_USER')[02] } )
aAdd( aCampos, { 'ZZ1_NOME' , 'C', TamSX3('ZZ1_NOME')[01] , TamSX3('ZZ1_NOME')[02] } )
cNomArq := "GeraTMP_SC" + cSeconds //CriaTrab(aCampos)
dbCreate( cNomArq, aCampos, __LocalDriver )
dbUseArea( .T.,, cNomArq, "TRB", .F., .F. )
//INDICE
TCDelFile(cInd01)
dbCreateIndex( cInd01, cIndice, {|| cIndice }, .F. )
Return( Nil )
Resultado
Informações adicionais
|
Com exceção do RDD c-tree, a tabela corrente não precisa estar aberta em modo exclusivo para a criação do índice, pois na criação de índices, no c-tree, é alterada a estrutura da tabela, mas é necessário que a tabela esteja aberta em modo exclusivo).
|
Caso exista um arquivo com o mesmo nome, definido no parâmetro , ele será excluído e o novo criado. No entanto, são realizados os seguintes passos
|
Salva fisicamente as alterações realizadas na tabela corrente.
Fecha todos os arquivos de índice abertos.
Cria o novo índice.
Posiciona o novo índice como ordem corrente.
Posiciona a tabela corrente no primeiro registro do índice
|
Gostou? Compartilhe com seus amigos e deixe um comentário! 😎