Clipper On Line • Ver Tópico - Problema pra criar CDX

Problema pra criar CDX

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Problema pra criar CDX

Mensagempor JoséQuintas » 28 Set 2018 20:22

Estou estranhando o comportamento.
Tenho a rotina de criar índices, sempre igual pra todos os arquivos e índices.

use arquivo
index on chave tag (nome)
index on chave2 tag (outro)

mas agora precisei usar pra arquivos em pastas.

use pasta\arquivo

o problema é que ao final da reindexação, somente uma única tag está dentro do CDX, para os arquivos em pasta diferente.

Alguma idéia?

Nota:
A rotina usa array pra TODOS os dbfs e TODOS os índices.
A única diferença é alguns arquivos com path no nome.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problema pra criar CDX

Mensagempor JoséQuintas » 28 Set 2018 20:35

      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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problema pra criar CDX

Mensagempor Itamar M. Lins Jr. » 28 Set 2018 23:52

Ola!
Tentou sem "TO (cDBFNAME)" é desnecessário.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Problema pra criar CDX

Mensagempor JoséQuintas » 29 Set 2018 01:42

Estava sem nome antes.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problema pra criar CDX

Mensagempor JoséQuintas » 29 Set 2018 18:12

Resolvido.
Esqueci que são duas rotinas, e estava alterando só uma.
E o que atrapalhou foi a barra de path estilo Linux.
Ao entrar como parte da tag, todas as tags ficaram iguais.

icdx.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problema pra criar CDX

Mensagempor asimoes » 30 Set 2018 18:26

Quintas,

o que é esse comando "disp stat" desculpa a minha ignorância, isso é do harbour ?
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Problema pra criar CDX

Mensagempor alxsts » 30 Set 2018 23:44

Olá!

asimoes escreveu:o que é esse comando "disp stat" desculpa a minha ignorância, isso é do harbour ?

Este é o famoso e ancestral comando Display status do dot prompt do dBASE.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Problema pra criar CDX

Mensagempor JoséQuintas » 01 Out 2018 08:05

Isso.
Que no meu dbase executa esta rotina:

STATIC FUNCTION cmdListStatus()

   LOCAL nCont, nCont2, nSelect := Select()

   FOR nCont = 1 TO 255
      IF Len( Trim( Alias( nCont ) ) ) != 0
         SELECT ( nCont )
         SayScroll()
         SayScroll( "Alias " + Str( nCont, 2 ) + " -> " + Alias() + iif( nCont == nSelect, "  ==> Actual Alias", "" ) )
         FOR nCont2 = 1 TO 100
            IF Len( Trim( OrdKey(nCont2 ) ) ) == 0
               EXIT
            ENDIF
            SayScroll( "   Tag " + OrdName( nCont2 ) + " -> " + OrdKey( nCont2 ) )
         NEXT
         IF Len( Trim( dbFilter() ) ) != 0
            SayScroll( "          Filter: " + dbFilter() )
         ENDIF
         IF Len( Trim( dbRelation() ) ) != 0
            SayScroll("          Relation: " + dbRelation() + " Alias: " + Alias( dbRSelect() ) )
         ENDIF
      ENDIF
   NEXT
   SELECT ( nSelect )
   SayScroll( "Current Path -> " + hb_cwd() )
   SayScroll()

   RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problema pra criar CDX

Mensagempor Itamar M. Lins Jr. » 01 Out 2018 20:44

Ola!

Cadê o "modi stru" ?

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Problema pra criar CDX

Mensagempor JoséQuintas » 02 Out 2018 09:00

José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro