Problema Urgente

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinhos

CDX ou NTX não vai importar se houve um misterio no codigo ou problema no indice.

Já aconteceu comigo de criar indices de mesmo nome para arquivo diferentes e uma hora filtrava beleza e outra não.

Voce deverá tirar a prova dos nove.

Coloque uma verificação como no exemplo:

Código: Selecionar todos

Select Caixa 
Set Order to 1 
seek DTOS(dCxaIni) 
browse() // --> Aqui voce visualiza os dados que TERÃO de aparecer
do while Caixa->cx_data <= dCxaFim .and. !eof() 
   <codigo> 
   ... 
   Select Cliente 
   Set Order to 1 
   seek Caixa->cx_clie 
   ...
   Select Caixa 
   skip 
enddo 
As situações para um determinado registro não aparecer são bastante grande como uso de indices condicionais em que registros que fazem parte de um RANGE não aparecem nele pelo fato dos CASEs terem definido a filtragem na geração do indice.

O que aparecer no BROWSE deverá ser impresso e se não for impresso ai existe um problema no DO..WHILE.

Mas assim como médicos fica dificil diagnosticar a doença sem a presença do paciente, teriamos sacado logo no inicio.

Poste o código.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Mensagem por juniorcamilo »

kiko escreveu:entao, foi o que eu falei ali...um erro (grosseiro) desses, aconteceria em todos os clientes, nao apenas em um....
mas, o relatorio do nosso colega pode ter algum parametro pra entrar em um determinado laço que apenas um cliente usa. algo tipo um relatorio de caixa que pode sair a relação de vendas do dia, ou nao, dependendo do que o usuario informar...
mas eh um caso especifico...
o mais certo eh o nosso amigo postar o codigo dele para nossa apreciação, para podermos ajudar com mais segurança...fica no campo do "achismo" nao eh uma boa coisa...hehehehehehe
nao entendi o 'erro grosseiro', amigo kiko o primeiro 'do while' é o CORPO DA NOTA FISCAL e o 2 PRODUTOS QUE PERTENCE A ESTA NOTA FISCAL.. blz todas notas fiscais possui produto(s), eu estou usando Alias para referenciar o arquivo hora do 'skip', o que te digo é que acompanhei passo a passo pelo cld e com as variaveis/compos do registros em "waith" quando hora de dar o 'NOT->(Dbskip())' penultima linha simplesmente sai do 1 do 'do while' sendo que hora que fez o 'skip' nota-se que as variaveis/campos do registro ainda sim satisfaz a condicao...
Avatar do usuário
kiko
Usuário Nível 3
Usuário Nível 3
Mensagens: 145
Registrado em: 08 Jul 2004 15:24
Localização: Cianorte

Mensagem por kiko »

veja bem: vamos pingar todos os I´s...

eu nao disse que VOCE ESTA A COMETER UM ERRO GROSSEIRO.
eu disse que a situacao que eu usei como exemplo eh um erro grosseiro, mas nao quer dizer que vc esta cometendo esse erro...
muito pelo contrario, pelo que vc explicou na sua ultima postagem, vc depurou todo o codigo e todos os SKIP´s estao no lugar certo e pulando os devidos registros...entao, o problema certamente é outro.
este arquivo tem muitos registros marcados para serem deletados? vc possui uma rotina de indexação de arquivos? isso aconteceu comigo uma vez...eu nao conseguia encontrar um registro em um arquivo, mas foi apenas uma questao de reindexar o arquivo e funcionou normalmente....
verifica isso tambem....
abraços e até a proxima
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Mensagem por juniorcamilo »

Kiko blz ,,,,,
Kiko o arquivo é bastante grande, vendas em um supermercado, tem sim a reorganizacao, com 'pack', seila o q é isso mas eu fiz alguma modificacao outro dia atraz e parece que ate agora nao ouve reclamacao, to esperando por ver,,,, será que existem um indice super seguro ou outra forma de procurar mais eficiente e rapido dq o INDICE NTX????
Valeu mesmo este forumm é de grande importancia para nos...
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Hoje eu uso CDX e seus recursos de subfiltragem direta no indice.

Ou seja supondo que voce tenha uma tabela de 20.000 registros e queira filtrar por um dos campos indexados e que os registros estejam esparsos usando SET FILTER voce levaria uns 4 minutos numa rede. Com o ORDSCOPE() isto leva no maximo 1 segundo.

Quando usava NTX eu passei a usar SUBNTX que trabalha do mesmo jeito criando subindices on-the-fly e eu conseguia o mesmo efeito. Com a SUBNTX voce passava como parametro o nome do indice NTX e ele criava um subset dele ai era só dar um SET INDEX e pronto era 2 a tres vezes mais rapidas que o indice condicional.

Como passei a usar Fivewin tive de abandona-la já que não tinha a mesma para Harbour e passei a usar CDX.

Se o seu do...while abre um indice condicional o problema pode ocorrer se outra maquina uso este indice e atualizou um registro enquanto seu laço estava sendo processado. Talvez isto ocorra mesmo que o indice não seja condicional e o registro que deveria estar na linha de tiro foi movimentado no momento em que o laço a avaliava.

Eu sei que é f...
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
kiko
Usuário Nível 3
Usuário Nível 3
Mensagens: 145
Registrado em: 08 Jul 2004 15:24
Localização: Cianorte

Mensagem por kiko »

só por curiosidade...vc falou que o cliente que esta com esse problema eh um mercado, e o DBF esta com mais de 20.000 registros...

os outros clientes que nao apresentam esse erro tem o fluxo de dados tao grande quanto esse? talvez seja por isso que o problema ocorre apenas nesse cliente.

o NTX pode nao ser a causa do seu problema, mas certamente esta causando metade desses problemas...
o mais certo era vc usar um RDD um pouco melhor, com mais recursos e mais segurança....
acho que é a hora de vc pensar em trocar o NTX por um outro RDD...
o Rochinha citou alguns exemplos utilizando o CDX...eh um bom RDD, alem de ser compativel com xHarbour, caso vc queira fazer a migraçao do seu aplicativo para xHarbour.....
tem tambem o NSX

mas, se vc usa NTX em um banco com tanto movimento assim, certamente o erro esta acontecendo por causa do indice zuado....

até a proxima
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

Acho que pode ser corrupção dos arquivos tambem, mas NTX trabalha bem com bases muito maiores que 20 mil registros, isto é uma quantidade muito pequena de registros.
Sem mais
Wagner Nunes
www.vagucs.com.br
Responder