Travamento no Indice

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
diego1504
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 11 Jul 2007 23:34
Localização: São Paulo - SP

Travamento no Indice

Mensagem por diego1504 »

Ola a todos.

Estou tendo problema para criar indice(por sinal meu primeiro indice no clipper). Andei dando uma olhada pelo forum, mas não achei nada similiar ao meu problema...e mais uma vez no meu código tudo parece estar igual ao que os livros e algumas funçoões deste forum fazem. apenas não usei nenhuma função de verificação como alguns aqui usam já que meu program é um "batch" que não vai rodar na rede.

O problema é o seguinte.

eu fiz o seguinte codigo para primeiro criar os indices

Código: Selecionar todos

dbCloseAll()  //close data
   dele file INDCAW3.NTX
   dele file FILEX001.NTX

dbcloseall()
use CAW_TIP3
   index on NUM_CONTRA to INDCAW3  //Reindexa arquivo CAW_TIP3
dbcloseall()

use CADFIL
   index on cod_bm to FILEX001

dbcloseall()

return

Acompanhado pelo debug. quando a linha de execução atinge a linha:

Código: Selecionar todos

 index on NUM_CONTRA to INDCAW3  //Reindexa arquivo CAW_TIP3
O programa trava!...também esta travando quando tento indexar o CADFIL

CADFIL é um arquivo pequeno com 35 registros
CAW_TIP3 tem por volta de uns 3.500

estou usando CLipper 5.3 + Blinker 1.0

Alguem ja teve algum problema deste? ou imagina o que possa ser?

Obrigado[/quote]
Diego Maciel
-----------
Clipper 5.3 + Blinker 6
COBOL + JCL + CICS + DB2 + VSAM
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

A não ser que o adiantado da hora (4 da madruga) esteja me deixando lerdo demais, não estou vendo nada de errado no seu código. Deveria funcionar a contento, mesmo com algum código redundante que existe. Uma enxugada:

Código: Selecionar todos

dbCloseAll()

dele file INDCAW3.NTX 
dele file FILEX001.NTX 

use CAW_TIP3
index on NUM_CONTRA to INDCAW3

// A abertura de um novo DBF, na mesma área, fecha o DBF
// anteriormente aberto, de forma automática. Não é necessário
// fechá-lo você mesmo.
use CADFIL 
index on COD_BM to FILEX001 

dbcloseall() 
return
Está tudo certo. Não vejo motivo para travamento. Sou obrigado a dar um chute: apagar todos os OBJ do seu projeto e recompilar do zero. Se der no mesmo, uma medida mais radical: reinstalar o Clipper. Aproveite o instalador que o colega Marcelo fez. Clique aqui para ver o tópico.
Me desculpe por não ser mais objetivo e preciso, mas é que realmente não vejo nada de errado. Não abro arquivos nem indexo dessa forma, mas pelo que ainda me lembro me parece tudo certo.

Por favor, apague aquele outro tópico que você incluiu em duplicidade, com o mesmo nome deste. Não tem nada nele mesmo. Assim, podemos deixar o fórum mais "enxuto".
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
diego1504
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 11 Jul 2007 23:34
Localização: São Paulo - SP

Mensagem por diego1504 »

Maligno obrigado pela resposta.

Então ja tentei apagar os obj. afinal tinha me resolvido um problema anterior.
Não deu certo. Estava pensando se não seria nescessario a inclusão de alguma LIB.

Não li nada a respeito em lugar nenhum é apenas um pensamento desesperado

Vou continuar procurando a respeito por ai e dando uma olhada no forum. Vou baixar o clipper do Marcelo também para ver se resolve




ps: O topico esta apagado, não tinha reparado o 'x' no canto, achei que só o modera poderia apagar topicos aqui. E aquele lá foi digamos "acidental"
Diego Maciel
-----------
Clipper 5.3 + Blinker 6
COBOL + JCL + CICS + DB2 + VSAM
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

diego1504 escreveu:Não deu certo. Estava pensando se não seria nescessario a inclusão de alguma LIB.
Se tivesse faltado alguma biblioteca, certamento o linker teria reclamado, emitindo uma mensagem de erro.
Vou baixar o clipper do Marcelo também para ver se resolve
É uma tentativa. :)
achei que só o modera poderia apagar topicos aqui. E aquele lá foi digamos "acidental"
Acontece com todo mundo de vez em quando. Exatamente por isso você pode apagar sua própria mensagem, desde que não exista nenhuma mensagem posterior à sua.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
diego1504
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 11 Jul 2007 23:34
Localização: São Paulo - SP

ta indo

Mensagem por diego1504 »

Bom acho que descobri o problema...talvez não exista problema!

Eu tentei com o CADFIL separado que é um arquivo pequeno com 35 registros e consegui criar o indice

Porém com o CAW_TIP3 não consigo ele é um arquivo grande com uns 3 mil registros.

Talvez não esteja travado só esteja demorando(bom esperei mais de 5min e nada). Percebi que vc´s usam uma função para mostrar o status da indexação.

Não consegui achar nenhuma no forum.

Geralmente vc´s estão colocando

index on x1 to x1 EVAL progresso() every lastrec()

lastrec() pesquisei

mas queria saber como vc´s montam o progresso().

Queria ver se tem como sabe se esta travado mesmo ou só esta demorando.

Obs:O ponto que não me deixa com tanta certeza é que aqui na firma existem arquivos maiores que indexam mais rapido.

Nos códigos aqui da firma eles usam de um jeito diferente...eu queria saber dentro do arquivo a porcentagem de indexação.


Se alguem puder me dizer como fazer esta função para me esclarecer obrigado!
Diego Maciel
-----------
Clipper 5.3 + Blinker 6
COBOL + JCL + CICS + DB2 + VSAM
Dércio_Luiz_Zanatta
Usuário Nível 3
Usuário Nível 3
Mensagens: 153
Registrado em: 11 Jan 2006 15:37
Localização: Ibirubá - RS

Mensagem por Dércio_Luiz_Zanatta »

Eu uso + ou - assim

INDEX ON CODERRO TO ARER-I01 EVAL PINDEX()

FUNCTION PINDEX()
LOCAL PERCEXE:=((RECNO()*100)/LASTREC())
@ 20,33 SAY PADL("Indexando. Aguarde... "+ALLTRIM(STR(PERCEXE))+" %",22," ")
RETURN .T.


Espero que vc consiga entender...
Um abraço...
Avatar do usuário
diego1504
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 11 Jul 2007 23:34
Localização: São Paulo - SP

Mensagem por diego1504 »

vlw Dércio!

também achei uma:

site: http://robson.fjaunet.com.br/fatec/clip ... ula_09.pdf

chamada:

Código: Selecionar todos

index on NUM_CONTRA to INDCAW3 EVAL ntxprogress() every lastrec()/10
|função:

Código: Selecionar todos

function ntxprogress
local cComplete:=ltrim(str((recno()/lastrec())*100))
setcolor(vcor2)
@ 23,40 say spac(39)
@ 23,40 say 'Indexando...:'+alias() // alias() retorna o nome do dbf
// que esta aberto e sendo usado
// neste momento
@ 23,72 say cComplete+'%'
setcolor(vcor1)
@ 23,40 say spac(39) // limpar a linha de msg de indexacao
return .t. // funcao ‚ obrigatorio voltar valor

O que complica é que o poblema persite. Eu nem chego a ver as mensagens de progresso ele esta travando antes!!!
:'(
Diego Maciel
-----------
Clipper 5.3 + Blinker 6
COBOL + JCL + CICS + DB2 + VSAM
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Tá estranho, pois 3 mil registros para indexar no Clipper é rápido, mesmo numa máquina PENTIUM 100 - Demoraria no máximo 30 segundos.

Você poderia me mandar esse arquivo que está dando problema ?

mmendeso@gmail.com

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
diego1504
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 11 Jul 2007 23:34
Localização: São Paulo - SP

Isto no existe!

Mensagem por diego1504 »

Olha na boa...não vou tentar mais compreender


Foi só colocar a função ntxprogress() que não travou. E eu ja estou com o indice pronto :))

Nem sei o que dizer.

Obrigado a todos pela ajuda
Diego Maciel
-----------
Clipper 5.3 + Blinker 6
COBOL + JCL + CICS + DB2 + VSAM
Grings
Usuário Nível 3
Usuário Nível 3
Mensagens: 340
Registrado em: 18 Ago 2004 13:51

Mensagem por Grings »

Acho que deveria pq na verdade essa função faz a indexação demorar mais ainda.
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Se me permitem, acredito que o problema seja no banco de dados. (DBF)
Deve estar corrompido em algum lugar.
Verifique.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
diego1504
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 11 Jul 2007 23:34
Localização: São Paulo - SP

Mensagem por diego1504 »

Pode ser !

Mas como saber se meu DBF esta corrompido?

tem algum programa ou função que faz esta verificação?

vou dar uma pesquisada

flwww
Diego Maciel
-----------
Clipper 5.3 + Blinker 6
COBOL + JCL + CICS + DB2 + VSAM
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Neste momento não tenho como te enviar.
Eu pessoalmente uso o FileFix que vem com o pacote do Norton Commander, procure por ele.
Caso não encontre me mande um e-mail que te envio.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Neste momento não tenho como te enviar.
Eu pessoalmente uso o FileFix que vem com o pacote do Norton Commander, procure por ele.
Caso não encontre me mande um e-mail que te envio.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Isto no existe!

Mensagem por Maligno »

diego1504 escreveu:Olha na boa...não vou tentar mais compreender
Foi só colocar a função ntxprogress() que não travou. E eu ja estou com o indice pronto :))

Nem sei o que dizer.
Pois eu também não sei o que dizer. Só dá pra especular. Como o nosso colega AlaminoJunior comentou: pode ser corrupção do DBF. Será? Não sei. Mas não custa a tentativa. Se puder, crie uma estrutura nova e faça a importação do arquivo antigo. Depois, remova essa função de acompanhamento de progresso da indexação e tente indexar. Se não travar, já sabe que era o DBF. Caso contrário, ficamos na mesma. Mas aí, tente modificar a tal de NTXProgress(). Zere ela. Deixe apenas o retorno TRUE. Só pra ver o que acontece.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder