Erro seek?
Moderador: Moderadores
-
sergio.mordente
- Usuário Nível 1

- Mensagens: 2
- Registrado em: 22 Ago 2021 13:11
- Localização: Belo Horizonte
Erro seek?
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?
- Nascimento
- Usuário Nível 4

- Mensagens: 763
- Registrado em: 19 Jul 2008 12:11
- Localização: OLINDA-PE
Erro seek?
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
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

- Mensagens: 2
- Registrado em: 22 Ago 2021 13:11
- Localização: Belo Horizonte
Erro seek?
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.
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

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Erro seek?
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.
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)
Alexandre Santos (AlxSts)
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Erro seek?
Olá!
Especular sob problema, mudar p/ CDX etc. Não identifica se é problema do NTX ou base corrompida.
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.
Sem ver o código e sem um exemplo demonstrando o problema, não tem como ajudar.noenv que é carácter, quando dou seek e o registo não é encontrado, ele posiciona no primeiro ao invés de retornar eof().
Especular sob problema, mudar p/ CDX etc. Não identifica se é problema do NTX ou base corrompida.
Acredito que sempre funcionou ai o NTX, então porque só agora acontece isso ?Eu uso ntx, mas nunca tive problema.
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.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Erro seek?
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).
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/
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/
Erro seek?
Amigos,
Busco por uma licença do ADS, a partir de 15 usuários, alguém possui para venda ?
Busco por uma licença do ADS, a partir de 15 usuários, alguém possui para venda ?
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Erro seek?
Olá!
Na Oracle vc deve encontrar.
Saudações,
Itamar M. Lins Jr.
Na Oracle vc deve encontrar.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.