Clipper On Line • Ver Tópico - duvida com OrdWildSeek

duvida com OrdWildSeek

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

Moderador: Moderadores

 

duvida com OrdWildSeek

Mensagempor porter » 13 Fev 2015 20:09

ola pessoal, estou tentando usar o OrdWildSeek, estou com duvida na sintaxe do comando, como eu informo a variavel do nome que quero localizar, com asteriscos.

variavel = "JOSE"
DO WHILE OrdWildSeek("*variavel*",.T.)  <-- duvida nessa linha
     AADD(aNomes,ALLTRIM(LLCDBF10->NCLIENTE) + " " + STR(NCUPOM) )
ENDDO   


obrigado.
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

duvida com OrdWildSeek

Mensagempor Toledo » 13 Fev 2015 20:36

Amigo, segue um exemplo:

variavel = "JOSE"
cBusca:="*"+variavel+"*"
nPas_:=1
DO WHILE OrdWildSeek(cBusca,iif(nPas_=1,.F.,.T.))
   AADD(aNomes,ALLTRIM(LLCDBF10->NCLIENTE) + " " + STR(NCUPOM) )
   nPas_+=1
ENDDO


Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

duvida com OrdWildSeek

Mensagempor porter » 14 Fev 2015 08:48

bom dia Toledo, o exemplo que você passou, deu certo, mas eu nao quero fazer um While, gostaria de saber se tem como a cada tecla pressionada, o ponteiro posicionasse no proximo registro dentro do DBF que satisfaça a condição, da mesma forma como é feito com LOCATE e CONTINUE .

obrigado.
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

duvida com OrdWildSeek

Mensagempor Itamar M. Lins Jr. » 14 Fev 2015 13:43

É o mesmo processo.
Faça de conta que o Do While é o Locate.
Porque veja bem, o Locate aguarda a pessoa digitar via READ no Get não é assim ?
No caso vc tem que usar uma outra opção que nas linguagens visuais usamos através de eventos ON KEYDOWN {||fSuaFuncaoPesquisar()}
O comportamento é igual ao de um GET só que não precisa teclar ENTER p/ começar a pesquisar, ele vai procurado enquanto vamos teclando.
Por exemplo o comando WAIT faz isso ou INKEY(0), use tbrowse ou dbedit com nTecla := inkey(0).

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

duvida com OrdWildSeek

Mensagempor porter » 16 Fev 2015 10:00

ola Itamar, o do do while processa o arquivo inteiro, e a cada registro que ele processa, tenho que mostrar no TBROWSE o registro que ele esta posicionado, essa é a minha duvida parar o processo e mostrar no Tbrowse a cada tecla pressionada.

cBusca:="*SILVA*"
DO WHILE OrdWildSeek(cBusca,iif(nPas_=1,.F.,.t.))
      brw:REFRESHALL()
      DO WHILE !brw:stabilize() .AND. NEXTKEY()=0
      ENDDO
      inkey(0) <-- é aqui que devo parar o processo ?
ENDDO


obrigado.
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

duvida com OrdWildSeek

Mensagempor Itamar M. Lins Jr. » 16 Fev 2015 10:44

Neste caso especifico de pesquisa com ordwild... vc precisa trabalhar com arrays no tbrowse não diretamente com o DBF como é no caso do locate ou seek.
Pesquisa Letra a Letra com ordwild... eu não fiz, eu uso DbSeek(). OrdWildSeek é mais refinado, procura incidência em uma string por isso tem que varrer o DBF todo, mesmo ele estando indexado.

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

duvida com OrdWildSeek

Mensagempor Toledo » 16 Fev 2015 12:46

Amigos, segue em anexo um exemplo.

Abraços,
Anexos
demoBrw.zip
(931.84 KiB) Baixado 203 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

duvida com OrdWildSeek

Mensagempor fladimir » 15 Dez 2016 17:10

Olá pessoal, to com um código q baseei aki no fórum sobre pesquisa com OrdWildSeek

Esta funcionando... porém acho meio estranho e queria ver se conseguem me auxiliar a uma melhoria...

Segue trecho do código q faz o OrdWildSeek Atual pra depois comentar como esta e o q pretendo.

cLetra := alltrim(cLetra)
@ 10,05 say cLetra
Set Order to nOrder
Index on &(IndexKey()) TAG _TEMP_ TO tHarbour CUSTOM ADDITIVE MEMORY
SET Order to nOrder
GO TOP

while OrdWildSeed( '*' + cLetra + '?', TRUE)
   OrdKeyAdd(_TEMP_)
END
OrdSetFocus('_TEMP')


Tenho um DBEdit q a medida q vai digitando o nome do cliente vai pesquisando, antigamente pesquisava da esquerda pra direita pq estava organizada por ordem de nome, depois mudei pra forma q esta acima pra pesquisar onde quer q tenha a palavra digitada...

Exemplo FERNAND (sem a letra "O" no final para entendermos melhor)
Antes mostrava
FERNANDO CASTRO
FERNANDO DUARTE LIMA
FERNANDO ELIAS SOARES

...

HOJE MOSTRA
ADONIS FERNANDO
ALEXANDRE AMADEU FERNANDES
BRUNO FERNANDO DE SOUZA
CAMILA FERNANDES DE SOUZA
FERNANDO AGUILHERA
FERNANDO ALENCAR DE MATOS
FERNANDO COSTA SILVA


Ai se finalizao a digitação da palavra no caso do exemplo FERNANDO (o no final) aparece
ADONIS FERNANDO
BRUNO FERNANDO DE SOUZA
FERNANDO AGUILHERA
FERNANDO ALENCAR DE MATOS
FERNANDO COSTA SILVA


Gostaria de uma ideia se teria como fazer um "MIX" de ambas as formas (Antiga e Nova) ou seja...
Fazer primeiro mostrar as palavras (Nomes aki no caso) que COMECEM pela palavra FERNAND e depois as que CONTEM "FERNAND"

Ficando o exemplo anterior semelhante a algo tipo a lista abaixo (supondo q foi digitado FERNAND
FERNANDO AGUILHERA
FERNANDO ALENCAR DE MATOS
FERNANDO COSTA SILVA
ADONIS FERNANDO
ALEXANDRE AMADEU FERNANDES
BRUNO FERNANDO DE SOUZA
CAMILA FERNANDES DE SOUZA


Alguém sabe se é possível isso via OrdWildSeek ou de outra maneira?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

duvida com OrdWildSeek

Mensagempor JoséQuintas » 15 Dez 2016 19:03

Talvez mais um índice.

while OrdWildSeed( '*' + cLetra + '?', TRUE)
   OrdKeyAdd(_TEMP_)
END
OrdSetFocus('_TEMP')
GOTO TOP
INDEX ON ... TO ... WHILE ...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

duvida com OrdWildSeek

Mensagempor fladimir » 19 Dez 2016 21:59

Não consegui bolar um índice para isto, pq se mando em ordem alfabética sai do propósito q seria primeiro conforme o q satisfazer da esquerda pra direita, no caso do exemplo a palavra "FERNANDO" deveria serem as primeiras e depois o q contiver "FERNANDO", alguma sugestão?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

duvida com OrdWildSeek

Mensagempor JoséQuintas » 20 Dez 2016 06:59

GOTO TOP
INDEX ON iif( Left( nome, 3 ) == Left( Chave, 3 ), "1", "2" ) + nome TO ... WHILE ...


ou se facilitar

GOTO TOP
INDEX ON Chave( nome, cChave ) TO ... WHILE ...

FUNCTION Chave( cNome, cChave )
   LOCAL cKey
   IF Left( cnome, 3 ) == Left( cChave, 3 )
      cKey := "1"
   ELSE
      cKey := "2"
   ENDIF
   RETURN cKey + cNome
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

duvida com OrdWildSeek

Mensagempor fladimir » 20 Dez 2016 13:10

Então eu tinha tentando desta forma mas não dava certo, vou tentar novamente e ver se jogando como função vai.

Obrigado Quintas.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

duvida com OrdWildSeek

Mensagempor fladimir » 20 Dez 2016 13:20

Fiz aki e os "FERNANDO" ficaram em cima, mas depois deles não vem o q contém FERNANDO vem os demais em ordem alfabética.

Acho q terei q fazer jogando num Array e depois uma tabela temporária.

Vou continuar com os testes, qualquer novidade aviso.

[] 's
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

duvida com OrdWildSeek

Mensagempor JoséQuintas » 20 Dez 2016 14:04

Então esse índice deu certo, o que deu errado foi ele não respeitar o índice atual.

Será que isso é recurso da SIXCDX do Clipper somente?

1) Criar o índice temp_ usando OrdWildSeek()
2) Criar o novo índice, com o temp_ ativado, e com WHILE, pra pegar só registros acessíveis no índice

Acredito que o Harbour tenha esse recurso, só não sei se a sintaxe é a mesma da SIXCDX.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

duvida com OrdWildSeek

Mensagempor rubens » 22 Ago 2017 09:12

Bom dia...

Fladimir,

Consegui resolver?

Obg...
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Próximo



Retornar para Harbour

Quem está online

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