Página 1 de 1

Criação de arquivos e indexação CDX

Enviado: 06 Jun 2012 14:01
por Vandi
Boa tarde,

Alguém pode me dizer se o procedimento abaixo está correto? Em caso negativo, o que está errado?

Código: Selecionar todos

Func Main()

request dbfcdx
RddSetDefault( "DBFCDX" )
DbSetDriver( "DBFCDX" )

set date brit
set epoc to 1980
set delete on

Private _stru:={}

if !file("Empresas.dbf") // Se não existe o arquivo, cria o mesmo

    aadd(_stru,{ "Codi" ,"C" ,05,0})
    aadd(_stru,{ "Empr" ,"C" ,40,0})
    aadd(_stru,{ "Ende" ,"C" ,40,0})
    aadd(_stru,{ "Bair" ,"C" ,20,0})
    aadd(_stru,{ "Muni" ,"C" ,20,0})
    aadd(_stru,{ "Esta" ,"C" ,02,0})

    dbcreate( 'Empresas.dbf', _stru)

endif


IF!FILE("Empresas.cdx")
    Use Empresas   ALIAS   Empr SHARED NEW
    INDEX ON Empr->Codi      TAG  mCodi TO Empresas.CDX
    INDEX ON Empr->Empr      TAG  mEmpr TO Empresas.CDX
    USE
ENDIF
Gilvandi

Criação de arquivos e indexação CDX

Enviado: 06 Jun 2012 14:40
por fladimir
Olá colega, eu particularmente não uso o Alias->ChavedoIndice na composição do mesmo como vc fez, não sei se isto seria errado...

... mas Coincidentemente ou não ontem em alguns testes com criação de janela e etc em FiveWin (suponho q o colega trabalhe com HWGUI devido o local da postagem) tive problemas justamente ao compor e trabalhar com índices, pois o colega q estava ministrando a aula tentou formar os índices da maneira q vc exemplificou e eu sugeri a mudança para sem os Alias e deu certo, pois antes estava dando erro de Corruption Detect, ao tentar trabalhar com os índices.

Não sei o q motivou a pergunta do colega, mas se foi algum erro talvez seja conforme a situação a qual presenciei acima descrita, se for, tente tirar os alias da composição do índice e teste, dizendo depois se deu certo.

Se não for, precisaríamos de maiores informações sobre qual seria a real necessidade / situação do colega para podermos opinar de forma mais adequada.

[]´s

Criação de arquivos e indexação CDX

Enviado: 06 Jun 2012 14:50
por alxsts
Olá!

Concordo com o Fladimir. Lembro-me de ter tido problemas com isso.

Alem da alteração sugerida pelo Fladimir, altere também o modo de abertura do arquivo. Ña criação de índices, o indicado é USE EXCLUSIVE.

Criação de arquivos e indexação CDX

Enviado: 06 Jun 2012 16:42
por Vandi
(RESOLVIDO)

Caros Fladimir e Alexandre,
Boa tarde...

Baseando-me nas orientações de vcs, modifiquei a rotina (abaixo) e funcionou perfeitamente.

Código: Selecionar todos

Func Main()

request dbfcdx
RddSetDefault( "DBFCDX" )
DbSetDriver( "DBFCDX" )

set date brit
set epoc to 1980
set delete on

Private _stru:={}

if !file("Empresas.dbf") // Se não existe o arquivo, cria o mesmo

    aadd(_stru,{ "Codi" ,"C" ,05,0})
    aadd(_stru,{ "Empr" ,"C" ,40,0})
    aadd(_stru,{ "Ende" ,"C" ,40,0})
    aadd(_stru,{ "Bair" ,"C" ,20,0})
    aadd(_stru,{ "Muni" ,"C" ,20,0})
    aadd(_stru,{ "Esta" ,"C" ,02,0})

    dbcreate( 'Empresas.dbf', _stru)

endif


IF!FILE("Empresas.cdx")
    Use Empresas
    INDEX ON Codi     TAG  mCodi TO Empresas.CDX
    INDEX ON Empr     TAG  mEmpr TO Empresas.CDX
    USE
ENDIF

Use Empresas   ALIAS   Empr SHARED NEW
Set Order To Tag mCodi
Obrigado pela colaboração

Gilvandi