Erro seek?

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

Moderador: Moderadores

sergio.mordente
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 22 Ago 2021 13:11
Localização: Belo Horizonte

Erro seek?

Mensagem por sergio.mordente »

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?
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Erro seek?

Mensagem por Nascimento »

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
sergio.mordente
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 22 Ago 2021 13:11
Localização: Belo Horizonte

Erro seek?

Mensagem por sergio.mordente »

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.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Erro seek?

Mensagem por alxsts »

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)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Erro seek?

Mensagem por Itamar M. Lins Jr. »

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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erro seek?

Mensagem por JoséQuintas »

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.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
VICTORHG
Usuário Nível 1
Usuário Nível 1
Mensagens: 3
Registrado em: 20 Set 2022 01:23
Localização: salvador/ba

Erro seek?

Mensagem por VICTORHG »

Amigos,

Busco por uma licença do ADS, a partir de 15 usuários, alguém possui para venda ?
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Erro seek?

Mensagem por Itamar M. Lins Jr. »

Olá!
Na Oracle vc deve encontrar.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder