duvida com OrdWildSeek

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

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

duvida com OrdWildSeek

Mensagem por porter »

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.

Código: Selecionar todos

variavel = "JOSE"
DO WHILE OrdWildSeek("*variavel*",.T.)  <-- duvida nessa linha
     AADD(aNomes,ALLTRIM(LLCDBF10->NCLIENTE) + " " + STR(NCUPOM) )
ENDDO	
obrigado.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

duvida com OrdWildSeek

Mensagem por Toledo »

Amigo, segue um exemplo:

Código: Selecionar todos

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
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

duvida com OrdWildSeek

Mensagem por porter »

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.
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

duvida com OrdWildSeek

Mensagem por Itamar M. Lins Jr. »

É 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.
Saudações,
Itamar M. Lins Jr.
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

duvida com OrdWildSeek

Mensagem por porter »

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.

Código: Selecionar todos

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.
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

duvida com OrdWildSeek

Mensagem por Itamar M. Lins Jr. »

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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

duvida com OrdWildSeek

Mensagem por Toledo »

Amigos, segue em anexo um exemplo.

Abraços,
Anexos
demoBrw.zip
(931.84 KiB) Baixado 224 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 do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

duvida com OrdWildSeek

Mensagem por fladimir »

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.

Código: Selecionar todos

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

Código: Selecionar todos

FERNANDO CASTRO
FERNANDO DUARTE LIMA
FERNANDO ELIAS SOARES
...

HOJE MOSTRA

Código: Selecionar todos

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

Código: Selecionar todos

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

Código: Selecionar todos

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

duvida com OrdWildSeek

Mensagem por JoséQuintas »

Talvez mais um índice.

Código: Selecionar todos

while OrdWildSeed( '*' + cLetra + '?', TRUE)
   OrdKeyAdd(_TEMP_)
END
OrdSetFocus('_TEMP')
GOTO TOP
INDEX ON ... TO ... WHILE ...
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/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

duvida com OrdWildSeek

Mensagem por fladimir »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

duvida com OrdWildSeek

Mensagem por JoséQuintas »

Código: Selecionar todos

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

Código: Selecionar todos

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 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/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

duvida com OrdWildSeek

Mensagem por fladimir »

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 do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

duvida com OrdWildSeek

Mensagem por fladimir »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

duvida com OrdWildSeek

Mensagem por JoséQuintas »

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 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/
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

duvida com OrdWildSeek

Mensagem por rubens »

Bom dia...

Fladimir,

Consegui resolver?

Obg...
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Responder