Página 1 de 2
Travamento no Indice
Enviado: 13 Jul 2007 01:21
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]
Enviado: 13 Jul 2007 04:20
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".
Enviado: 13 Jul 2007 08:22
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"
Enviado: 13 Jul 2007 08:27
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.
ta indo
Enviado: 13 Jul 2007 10:52
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!
Enviado: 13 Jul 2007 11:15
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...
Enviado: 13 Jul 2007 11:22
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!!!
:'(
Enviado: 13 Jul 2007 11:37
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
Isto no existe!
Enviado: 13 Jul 2007 11:43
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
Enviado: 13 Jul 2007 12:24
por Grings
Acho que deveria pq na verdade essa função faz a indexação demorar mais ainda.
Enviado: 13 Jul 2007 15:28
por alaminojunior
Se me permitem, acredito que o problema seja no banco de dados. (DBF)
Deve estar corrompido em algum lugar.
Verifique.
Enviado: 13 Jul 2007 15:45
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
Enviado: 13 Jul 2007 16:27
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.
Enviado: 13 Jul 2007 16:27
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.
Re: Isto no existe!
Enviado: 13 Jul 2007 16:34
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.