Jump to content
Fivewin Brasil

ALGO ESTRANHO COM SEEK EM DBFCDX


jfaguiar

Recommended Posts

Boa tarde amigos.

Tenho uma tabela que com o nome "ARQFUNC", cujos índices são primeiro VENDCOD e segundo VENDNOME.

O campo VENDNOME possui 50 caractere, mas  se eu criar uma string de 30 posições e digitar nela parte de um nome o sistema está encontrando, mesmo com set softseek desabilitado (off)!!!

Fiz o exemplo abaixo e foi isso que aconteceu isso!

Alguém alguém saberia me informar o que está acontecendo nesta tabela ?

 

FUNCTION TestPesqfunc()
IF NETUSE("ARQFUNC","ARQFUNC",.T.,.F.,20)
   OrdListAdd("ARQFUNC")
   DbSetOrder(2)

   SET SOFTSEEK OFF

   ? INDEXKEY()
   ? LEN(VENDNOME)
   //
   cNOMFUNC := "BRUNO GUTTIERREZ FERNANDES"

   SEEK cNOMFUNC
   IF EOF()
      ? "nÃO ENCONTREI"
   ENDIF

   BROWSE()

   close database
ENDIF
RETURN Nil
****************************************************************************
 

 

 

 

 

Obrigado

 

Link to comment
Share on other sites

 

Boa tarde amigos.

Tenho uma tabela que com o nome "ARQFUNC", cujos índices são primeiro VENDCOD e segundo VENDNOME.

O campo VENDNOME possui 50 caractere, mas  se eu criar uma string de 30 posições e digitar nela parte de um nome o sistema está encontrando, mesmo com set softseek desabilitado (off)!!!

Fiz o exemplo abaixo e foi isso que aconteceu isso!

Alguém alguém saberia me informar o que está acontecendo nesta tabela ?

 

FUNCTION TestPesqfunc()
IF NETUSE("ARQFUNC","ARQFUNC",.T.,.F.,20)
   OrdListAdd("ARQFUNC")
   DbSetOrder(2)

   SET SOFTSEEK OFF

   ? INDEXKEY()
   ? LEN(VENDNOME)
   //
   cNOMFUNC := "BRUNO GUTTIERREZ FERNANDES"

   SEEK cNOMFUNC
   IF EOF()
      ? "nÃO ENCONTREI"
   ENDIF

   BROWSE()

   close database
ENDIF
RETURN Nil
****************************************************************************
 

 

 

 

 

Obrigado

 

Esse é o comportamento padrão, desde a época do CLIPPER...

Exemplo:

Imagine uma tabela de clientes com o indice 2 sendo NOME campo CARACTER de tamanho 50 e contem um cliente chamado "JOSE DA SILVA"

cNome := "JOSE"
DbSelectArea("CLI")
DbSetOrder(2)
lRet := DbSeek(cNome)  // aqui vai retornar .T.


cNome := "JOSE"
cNome := PadR(cNome,50)
DbSelectArea("CLI")
DbSetOrder(2)
lRet := DbSeek(cNome)  // aqui vai retornar .F.

 

 

 

 

Link to comment
Share on other sites

Obrigado amigos.

Me deparei com o problema quando um técnico em um cliente criou uma tabela em minha base de dados, onde havia o nome do funcionário com 30 posições

Eu sinceramente mexendo com dbf ha tanto tempo, não sabia que isso ocorria.

Vou orientá-lo a alterar o tamanho do campo para 50, de modo que fique do mesmo tamanho do que está no cadastro funcionários.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...