Moçada, pq qndo vou criar os indice pela 1º vez da a mensagem VMPREALLOC
AQUI esta o arquivo que uso para criar os indice.
Outra coisa, abaixo tem 2 variaveis Locais com o nome de Codcli e nomcli, Tive que coloca-las pq tava dando erro, imagino pq na criacao do meu indice tambem tenha esse nome.Eu realmente tenho que declara-las ?
valeu Pessoal
/******************************************************/
Function Abredbf()
local aind
local nx
local carq
local aest
local codcli
local nomecli
//********************* Arquivo de Clientes
cArq := 'CLIENTES.DBF'
If !File(cArq)
aEst := { { 'CODCLI' , 'N', 5, 0 } , ; // 1 Codigo do Cliente
{ 'NOMECLI' , 'C', 35, 0 } , ; // 2 Nome do Cliente
{ 'ENDECLI' , 'C', 30, 0 } , ; // 3 Endereco
{ 'VALOR' , 'N', 10, 2 } } // 4 VALOR DOS BLOQUETOS
DbCreate(cArq,aEst)
erase('Cli*.ntx')
Endif
DBUSEAREA(.T.,,CARQ,'CLI',.F.)
AIND := { { "CLI1.NTX" , ;
"CODCLI" , { || CODCLI } } , ;
{ "CLI2.NTX" , ;
"NOMECLI" , { || NOMECLI } } }
FOR NX := 1 TO LEN(AIND)
IF !FILE(AIND[NX,1])
CLI->(DBCREATEINDEX(AIND[NX,1],AIND[NX,2],AIND[NX,3]))
ENDIF
NEXT NX
CLI->(DBCLEARINDEX())
FOR NX := 1 TO LEN(AIND)
CLI->(DBSETINDEX(AIND[NX,1]))
NEXT NX
CLI->(DBSETORDER(1))
RETURN .T.
Mensagem na cricao do Indice
Moderador: Moderadores
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
Achei legal sua função mas não é o método apropriado de trabalho com .DBFs.
Em primeiro lugar voce devera possuir uma rotina onde todos os seus .DBFs serão criados.
Em segundo lugar voce devera possuir uma rotina onde todos os seus .NTXs também serão criados.
A rotina de criação de arquivos deverá estar no aplicativo principal que ao ser executado verifica sua existencia e cria as tabelas necessárias.
A rotina de criação de indices deverá ser chamada logo após a a criação dos .DBFs ou a qualquer momento em um menu de seu sistema.
Da forma como esta voce não podera definir usuarios para tal tarefa, que exige um certo nivel dentro do sistema, exemplo somente usuário nivel 5 podem criar indices e/ou arquivos.
Em terceito lugar ao criar indices da forma como voce coloca dentro do Fivewin, voce deverá fechar o arquivo quando o mesmo for criado, abri-lo para criação do indice e fechá-lo posteriormente.
Quando voce executa um comando CREATE o arquivo fica aberto e manusear a estrutura dele ou registros neste momento não é apropriado.
@braços :?)
Achei legal sua função mas não é o método apropriado de trabalho com .DBFs.
Em primeiro lugar voce devera possuir uma rotina onde todos os seus .DBFs serão criados.
Em segundo lugar voce devera possuir uma rotina onde todos os seus .NTXs também serão criados.
A rotina de criação de arquivos deverá estar no aplicativo principal que ao ser executado verifica sua existencia e cria as tabelas necessárias.
A rotina de criação de indices deverá ser chamada logo após a a criação dos .DBFs ou a qualquer momento em um menu de seu sistema.
Da forma como esta voce não podera definir usuarios para tal tarefa, que exige um certo nivel dentro do sistema, exemplo somente usuário nivel 5 podem criar indices e/ou arquivos.
Em terceito lugar ao criar indices da forma como voce coloca dentro do Fivewin, voce deverá fechar o arquivo quando o mesmo for criado, abri-lo para criação do indice e fechá-lo posteriormente.
Quando voce executa um comando CREATE o arquivo fica aberto e manusear a estrutura dele ou registros neste momento não é apropriado.
@braços :?)
-
gunafe
- Usuário Nível 1

- Mensagens: 1
- Registrado em: 02 Mar 2005 12:25
- Localização: São José dos Pinhais - PR
Bom dia,
Estou chegando agora por aqui, apesar de já ter participado do grupo quando era somente clipper. Acho até que voce já resolveu o problema, mas não custa nada acrescentar mais uma dica as que voce já tem, vamos la: basta acrescentar FIELD-> ao campo que vamos usar como indice, ex.: AIND := { { "CLI1.NTX" , ;
"CODCLI" , { || FIELD->CODCLI } } , ;
{ "CLI2.NTX" , ;
"NOMECLI" , { || FIELD->NOMECLI } } }
Estou chegando agora por aqui, apesar de já ter participado do grupo quando era somente clipper. Acho até que voce já resolveu o problema, mas não custa nada acrescentar mais uma dica as que voce já tem, vamos la: basta acrescentar FIELD-> ao campo que vamos usar como indice, ex.: AIND := { { "CLI1.NTX" , ;
"CODCLI" , { || FIELD->CODCLI } } , ;
{ "CLI2.NTX" , ;
"NOMECLI" , { || FIELD->NOMECLI } } }
[]´s
Luiz Augusto
São José dos Pinhais - PR
Luiz Augusto
São José dos Pinhais - PR

