Clipper On Line • Ver Tópico - Erro seek?

Erro seek?

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

Moderador: Moderadores

 

Erro seek?

Mensagempor sergio.mordente » 22 Ago 2021 13:28

Boa tarde, primeira vez por aqui. Uso o Harbour ha anos e nunca tive este problema, estou sem entender o que acontece com seek. Tenho uma tabela com 220.000 registros indexada pelo campo noenv que é carácter, quando dou seek e o registo não é encontrado, ele posiciona no primeiro ao invés de retornar eof(). Alguém já passou por isto?
sergio.mordente
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 2
Data de registro: 22 Ago 2021 13:11
Cidade/Estado: Belo Horizonte
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Erro seek?

Mensagempor Nascimento » 22 Ago 2021 13:33

vc usa ntx ou cdx? , passei algo parecido usando rdd ntx

as vezes achava as vezes não, depois que passei pra cdx sanou meu problema
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 668
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 103 vezes
Mens.Curtidas: 69 vezes

Erro seek?

Mensagempor sergio.mordente » 22 Ago 2021 14:17

Obrigado pela rápida resposta. Eu uso ntx, mas nunca tive problema. Como defino a Harbour para cdx? Pode me indicar uma fonte na internet para pesquisa? Além do programa em Harbour também acesso as tabelas com Java e Php, tenho que verificar se os drives serão compatíveis.
Com ntx ele sempre acha quando existe o problema esta quando não existe, eu espero que avance para o ultimo registro o que retornaria eof(), mas esta apontando o primeiro registro.
sergio.mordente
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 2
Data de registro: 22 Ago 2021 13:11
Cidade/Estado: Belo Horizonte
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Erro seek?

Mensagempor alxsts » 22 Ago 2021 14:36

Olá!

Seja bem-vindo ao fórum Sergio!

O tópico Migrar de NTX para CDX. Como proceder ? é antigo mas pode te ajudar. Deve haver outras informações relacionadas em outros tópicos. Habitue-se a utilizar o recurso de busca do fórum, no canto superior direito da página.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

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

Erro seek?

Mensagempor Itamar M. Lins Jr. » 22 Ago 2021 15:34

Olá!
noenv que é carácter, quando dou seek e o registo não é encontrado, ele posiciona no primeiro ao invés de retornar eof().


Sem ver o código e sem um exemplo demonstrando o problema, não tem como ajudar.
Especular sob problema, mudar p/ CDX etc. Não identifica se é problema do NTX ou base corrompida.
Eu uso ntx, mas nunca tive problema.

Acredito que sempre funcionou ai o NTX, então porque só agora acontece isso ?

Se a base(DBF) estiver corrompida CDX não irá resolver.
Coloca o DBF zipado e o NTX com algum exemplo que demonstre o problema. Ai, mais pessoas poderão ajudar.

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 5556
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 205 vezes
Mens.Curtidas: 323 vezes

Erro seek?

Mensagempor JoséQuintas » 22 Ago 2021 17:24

Como já disseram, podem existir vários motivos.

O mais comum é índice corrompido.
Outro é erro do programador, por exemplo indexar por TRIM(), ou fazer pesquisa por TRIM()

INDEX ON TRIM( NOME ) TO INDICE

Isso é errado, vai criar o índice baseado no tamanho do primeiro resultado, que pode ser 1 letra ou até nenhuma.

Mas de um modo geral, o CDX é mais tradicionalmente usado, por NÃO SER exclusivo do Clipper, ter mais compatibilidade com outros programas, e reduzir a quantidade de arquivos abertos, coisa que no Clipper era muito importante, por causa da limitação do DOS.

Explicação de modo geral:
- CDX é um único arquivo, que pode conter até 50 índices diferentes, contando como um único arquivo aberto
- CDX é compactado, economizando espaço em disco
- CDX aceita chave de até 200 caracteres, enquanto NTX aceita somente até 100
- Por ser compactado, o uso em rede é muito mais rápido do que NTX, porque envolve menos informação pela rede
- Por só ter vantagens, e praticamente ter se tornado o índice padrão, o NTX não teve muita melhoria no Harbour
- CDX está presente no Clipper desde a versão 5.0, ele surgiu compatível com FOXBASE/FOXPRO, que mais tarde se tornou o Microsoft Visual FoxPro. Também está presente no Advantage Database Server, e sempre foi seguido por outras linhas de software, até mesmo em LINUX, onde o FOXBASE foi um dos primeiros a chegar, por já existir ANTES DO LINUX EXISTIR.
Como assim? cheguei a usar FOXBASE em XENIX, uma versão reduzida do UNIX, portada para funcionar em microcomputador nos tempos do 386 SX. Podemos dizer a grosso modo que LINUX é um UNIX open-source, dos tempos do DOS, e talvez até antes do Windows e/ou junto com Windows 3.1 (não lembro mais ao certo).
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 17601
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 956 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Ahrefs [Bot] e 12 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