Página 1 de 1

Locate X Seek

Enviado: 26 Mar 2008 10:38
por José Luiz
Existe a possibilidade de transformar minhas pesquisas "locate" para o "seek" em bancos indexados ? Por exemplo:

locate for rtrim(vmenor)$menor
...
continue

Aqui minha pesquisa é do sobrenome do adolescente. Ao achar um registro é colocado em um vetor e continua pesquisando. Terminada a pesquisa as ocorrências são jogadas no achoice para poder escolher a opção desejada.

Não consigo isso no "seek".

Enviado: 26 Mar 2008 11:35
por alaminojunior
Ao invéz de locate for rtrim(vmenor)$menor

pode usar

Código: Selecionar todos

do while !eof()
    if !dbseek(rtrim(vmenor))
       skip
    else
       inclui no vetor
       skip
    endif
enddo

achoice()
Claro que o índice em questão deve estar aberto e "na agulha".

Enviado: 26 Mar 2008 11:41
por Pablo César
alaminojunior escreveu:

Código: Selecionar todos

    if !dbseek(rtrim(vmenor))
...//...
Caro Alamino, acho que o colega explicou que deseja fazer o SEEK não com o nome da pessoa e sim com o sobre-nome. Isto é, ele deseja procura no índice como SUB-STRING. Acho que existe uma função do CDX que faz isso, não é ?
Claro que o índice em questão deve estar aberto e "na agulha"
Na agulha ? Não entendí, poderias explicar a que você se refere ?

Enviado: 26 Mar 2008 11:49
por alaminojunior
Na agulha ? Não entendí, poderias explicar a que você se refere ?
Com uma resposta vou tentar matar as duas questões.

Quis dizer que para fazer a tal pesquisa por sobrenome, o índice "sobrenome" precisa estar setado, dentre tantos índices abertos, (nome, idade, sexo, código, etc...) Sendo assim basta informar o que se deseja encontrar.
Agora, sobre a sub-string: Só é possível com a Six. Com outras rdd´s somente com auxilio da função AT(), e muito lento.

Enviado: 26 Mar 2008 12:00
por Pablo César
alaminojunior escreveu:que para fazer a tal pesquisa por sobrenome, o índice "sobrenome" precisa estar setado, dentre tantos índices abertos, (nome, idade, sexo, código, etc...)
Para isso o colega teria que desdobrar em outro campo (digamos campo SOBRENOME) e guardar somente o sobre nome alí. Mas pelo que entendo todo mundo faz um campo VNOME (por exemplo) e alí é prenchido PRIMEIRO_NOME+NOME_DO_MEIO+SOBRENOME e até apelido.... hihihi Fica difícil fazer desdobramento, as vezes o que se procura é um nome do meio.

Enviado: 26 Mar 2008 12:07
por alaminojunior
Pablo, acho que quando editei vc já tinha postado, mas a solução então seria a Six, caso o nosso amigo use Clipper 5.2, se for 5.3 não dá.

Enviado: 26 Mar 2008 12:15
por Pablo César
alaminojunior escreveu:a solução então seria a Six, caso o nosso amigo use Clipper 5.2, se for 5.3 não dá.
O Six não funciona com 5.3 ? Estavamos falando disso o outro dia com Maligno (veja neste link) e tinha eu entendido que o SIX poderia ser usado com 5.3.

De todas formas, nesse caso com o SIX você Alamino poderia dar a função de pesquisa por sub-string ?

Enviado: 26 Mar 2008 12:25
por alaminojunior
Com 5.3 não funciona, aliás me arrependo de ter atualizado os meus sistemas para 5.3 por isso. As funcionalidades da Six são várias, entre outras criptografia do dbf e outros bichos mais.
As funções para esta pesquisa que estamos discutindo são sx_wildseek e sx_wildmatch, entre outras. No site do Maligno tem ela completinha e com NG. Vale a pena.

Enviado: 26 Mar 2008 12:51
por Pablo César
O SIX não funciona com 5.3, então estou enrascado !. Eu tenho meu sistema modular grande parte com 5.2.e ,´5.3 e até módulo em xHarbour. E eu gostaria de utiliza uma RDD que funcionasse bem para as três. Obrigado Alamino pelo seu esclarecimento.

Enviado: 26 Mar 2008 12:53
por Maligno
A bilbioteca SIX tem a vantagem da função sx_WildSeek(), que permite pesquisa de sub-strings. Resolveria o problema do colega facilmente.