Página 1 de 1

Problemas com a SIXCDX (Urgente) me ajudem!!!

Enviado: 06 Jun 2006 16:25
por frank_fpc
Coloquei um tópico já ha alguns dias e ninguém me respondeu, resolvi mudar para dar o impacto necessário, pois tenho urgência nessa ajuda por parte dos amigos que frequentam esse fórum!

Pessoal o meu problema é o seguinte: estou com um sistema que desenvolvi, que ao fazer a procura por um determinado dado no índice ele está me retornando um que não corresponde ao procurado, como registro encontrado.
É como se o índice estivesse corrompido, mas sem o sistema apresentar nenhuma mensagem de corrupção de dados ou índice, o que é pior, pois quando há mensagen de erro fica mais fácil...

Estou usando Clipper 5.2e, SIX2 com índices CDX ao invés de NSX, e já troquei todos os comandos por funções tais como Dbseek(), DbSetorder(), DbSelectarea(), DbDelete().

O que fazer, alguém já passou por isso, e saberia me dizer como proceder amigos...
[/b]

Enviado: 06 Jun 2006 19:36
por frank_fpc
Talvez me questione para fazer uma busca antes, que já existem tópicos relacionados, mas já efetuei uma pesquisa, mas embora tenha achado algumas coisas relacionadas, nada especificamente para o meu problema...

Fico no aguardo de opiniões!

Enviado: 07 Jun 2006 08:30
por kiko
baum....eu uso o nsx via SixNsx, nunca tive nenhum problema parecido...mas em todo caso, vamos lah...
- eu sei q eh uma pergunta ridicula, mas nao deixa de ser uma causa do problema: vc esta indexando na ordem certa? tipo assim...buscando na ordem de nome quando deveria ser na ordem de codigo?
- q tipo de campo vc esta fazendo o DbSeek?
- outros seek`s do seu sistema estao funcionando corretamente? se nao estiver buscando em lugar nenhum, talvez seja problema na criacao dos indices
- como esta esse arquivo de dados quanto a registros deletados? seu sistema tem uma rotina de reindexaçao? eh feito um pack regularmente nesse dbf?
- algum problema de rede nao pode estar fazendo vc perder o resultado do seek em algum momento?
- o SoftSeek esta ativo? nao pode ser o retorno de uma busca aproximada?

como vc pode ntoar, sao varias causas pra uma busca retornar algo errado, consegui me lembrar dessas, mas outras coisas tb podem acontecer...mas vamos por eliminatoria. tente isso e volte a postar os resultados....

um abraço e até a proxima

Enviado: 07 Jun 2006 13:09
por digitom
O Kiko tem toda razão. Muitas vezes a gente faz uma pesquisa tipo:

select tabela1
set order to 1
seek codigo -->> Neste caso encontra por codigo e está ordenado por código.

logo em seguida deseja-se buscar por cliente.
Select Tabela1
Seek NomeCliente -->> Observe que a tabela continua ordenada por codigo, e se deseja buscar por Nome-do-cliente.

é isso, além das questões postadas pelo KIKO. isso, isso, isso.....

Enviado: 07 Jun 2006 15:49
por frank_fpc
Oi pessoal, quanto às possibilidades levantadas por vcs, vou responder abaixo, embora eu saiba que até mesmo alguém que tenha uma certa exepriência como eu, possa estar sujeito há alguns erros básicos, contudo tenho plena certeza que não são esses motivos apontados por vcs o problema:

- Sim o índice está em ordem de código crescente como deve e não estou efetuando a busca de um dado diferente do que contém o índice;

- É um campo do tipo string de 6 caracteres sem espaços em branco dentro dele, pois o mesmo é completado com zeros como deve ser ;

- Sim outros Seek´s estão funcionando normalmente, somente em 2 dos 3 arquivos relacionados ao Contas a Receber é que o problema está aparecendo;

- Ter registros deletados tem sim, como todos têm creio eu, no entanto não vejo relação disso com o índice e a procura, até porque só tem cerca de 0,83% do tamanho do arquivo, só cerca de 415 registros deletados. Possuo sim rotina de Indexação com barra de progresso ( e não reindexo os arquivos, mas crio-os do zero mesmo). Nem sempre é realizado um pack só quando necessário até porque tenho um controle para saber qual usuário apagou determinado registro;

- Quanto a problemas de rede, essa é uma possibilidade que poderia ser a causa (mas mesmo havendo esporadicamente oscilações de energia, há no-breaks em todas as máquinas), mas porque só acontece com esses arquivos, mesmo tendo outros que são muito usados?

- Quanto ao Softseek, até descarto a possibilidade, pois sei muito bem a sua usabilidade, e usando o DbSeek(), pronto;


Pelo menos todas essas possibilidades podem ser descartadas, no entanto, tenho algumas perguntas que podem ajudar a esclarecer o assunto:

1) Ouvi certa vez falar que não é preciso colocar o DbCommit() sempre que vc fizer uma alteração no banco de dados, isso pode ser num espaço maior de tempo, o algo relacionado, o que vcs têm a falar sobre isso, pois uso em todas as alterações que acontecem no banco de dados;

2) Existem falhas ou bug´s no SIXCDX, pois já ouvi falar por parte de alguns que é preciso usar a _DBFCDX.LIB para corrigir uns problemas nela, mas só para o Clipper 5.3, é só para ele mesmo ou para os outros também, mas quando se usa o DBFCDX ou a SIXCDX?

AINDA ACREDITO que tem alguma falha nos índices, mas não consegui descobrir o quê????

ESPERO A AJUDA DE VCS!!!!!!!!

Enviado: 08 Jun 2006 00:25
por Dudu_XBase
Boa Noite.
Rdd Six é imcompátivel com clipper 5.3.
Se for usar cdx com clipper 5.3 usa o CDX que já esta incorporado a essa versão.

Ao indexar em sixcdx crie as tags usando a condição For !deleted()

Exemplo:
#include "sixcdx.ch"

USE CLIENTES NEW EXCLUSIVE VIA "SIXCDX"
index on CODIGO tag 1 for !deleted()
index on NOME tag 2 for !deleted()



E depois faça o seguinte teste.
Substitua um dbseek seu pela função sx_setscope()
Como:
Imagine que irei procurar a palavra dudu no banco acima...

// Com o uso do dbseek
dbsetorder(2) // ordem de nome
if !dbseek("dudu")
? "não encontrei"
else
? "achei a peça "
endif


// com o uso do sx_setscope() ,sx_settag() e sx_keycount()
sx_settag(2) // ordem de nome
sx_setscope(0,"dudu") // top
sx_setscope(1,"dudu") // bottom
if sx_keycount() = 0 // retorno a qtde de reg que atenderam o filtro
? "não encontrei"
else
? "achei mano"
endif
sx_clrscope(0) // limpo o filtro
sx_clrscope(1)


Delete os cdxs e os recrie com a condição colocada acima.
Já corrigi uma falha usando esse mesmo recurso.
Post os resultado obtidos.

Enviado: 08 Jun 2006 18:18
por frank_fpc
Amigo Dudu, valeu pela dica, mas eu uso o Clipper 5.2e com Blinker 5.1 e SIXCDX, por isso não posso usar alguns comandos recomendados por vc, pois usei o CDX, justamente porque não tinha quse alteração nenhuma na forma de usar e chamar os arquivos e índices.

Vc Dudu, ou alguém sabe de alguma falha existente na SIXCDX ????

Enviado: 09 Jun 2006 08:15
por Dudu_XBase
Bom dia.
Vc consegue criar os indices com a clausula que te passei nessa versão.
Não há erros no SIXCDX nunca peguei um.