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

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Vandi
Usuário Nível 2
Usuário Nível 2
Mensagens: 83
Registrado em: 16 Set 2011 23:26
Localização: Brasilia-DF

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

Mensagem 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
Editado pela última vez por Pablo César em 06 Jun 2012 19:28, em um total de 1 vez.
Razão: O presente tópico foi movido da seção HwGui, uma vez que seu conteúdo não tem relação com os objetivos daquela seção, onde só podem constar dúvidas técnicas de programação diretamente relacionadas com a HwGui.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

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

Mensagem 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
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

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

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
Vandi
Usuário Nível 2
Usuário Nível 2
Mensagens: 83
Registrado em: 16 Set 2011 23:26
Localização: Brasilia-DF

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

Mensagem 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
Responder