duvida com OrdWildSeek

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

Moderador: Moderadores

dbdc5554
Usuário Nível 3
Usuário Nível 3
Mensagens: 149
Registrado em: 03 Dez 2012 08:49
Localização: uberlandia-MG

duvida com OrdWildSeek

Mensagem por dbdc5554 »

crie um arq temporario grave os fernado e depois os at( fernado (sem ser os começando na 1 coluna

no prg de vendas localizo os produtos por uma ou varias partes do nome e gravo um tep e depois exibo em browser

base de 10.00 fica instantanea 1 segundo por ai
95.xxx acabei de testar uns 4 segundos


PAiva
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

duvida com OrdWildSeek

Mensagem por fladimir »

eu nao... parei nao vi novamente

alguem conseguiu::>
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

duvida com OrdWildSeek

Mensagem por asimoes »

Voltando ao assunto fiquei brincando com OrdWildSeek, rs

Código: Selecionar todos

  lSeguinte := .F.
  NOMES->( DbGoTop() ) //Tem que colocar o Go Top pra funcionar o OrdWildSeek
   
   DO WHILE NOMES->( OrdWildSeek( "*FERNAND*", lSeguinte ) )
      aAdd( aNomesAux, { NOMES->Nome, IF( Left( NOMES->Nome, 1) = "F", 0, 1 ) } )
      lSeguinte := .T.
   ENDDO
   
   aSort( aNomesAux ,,, {|x,y| y[2] > x[2]} )
   
   aNomes := {}
   
   FOR EACH oElemento IN aNomesAux
      aAdd( aNomes, oElemento[1] )
   NEXT
   
   aChoice(0,0,24,79, aNomes )
Fladimir,

Resulta:
2018-02-09 09_34_41-CDBF - DBF Viewer&Editor.png
2018-02-09 09_34_41-CDBF - DBF Viewer&Editor.png (6.46 KiB) Exibido 859 vezes
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

duvida com OrdWildSeek

Mensagem por asimoes »

Uma melhorada:

Código: Selecionar todos

   lSeguinte := .F.
   
   aNomesAux    := {}
   
   NOMES->( DbGoTop() ) //Tem que colocar o Go Top pra funcionar o OrdWildSeek
   
   cPesquisa := "FERNAND"
   
   DO WHILE NOMES->( OrdWildSeek( "*" + cPesquisa + "*", lSeguinte ) )
      aAdd( aNomesAux, { NOMES->Nome, IF( Left( NOMES->Nome, 1) = Left( cPesquisa, 1 ), 0, 1 ) } )
      lSeguinte := .T.
   ENDDO
   
   aSort( aNomesAux ,,, {|x,y| y[2] > x[2]} )
   
   aNomes := {}
   
   FOR EACH oElemento IN aNomesAux
      aAdd( aNomes, oElemento[1] )
   NEXT
   
   aChoice(0,0,24,79, aNomes )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

duvida com OrdWildSeek

Mensagem por asimoes »

Código: Selecionar todos

   cPesquisa := "FERNAND"
   
   DO WHILE NOMES->( OrdWildSeek( "*" + cPesquisa + "*", lSeguinte ) )
      aAdd( aNomesAux, { NOMES->Nome, IF( SubStr( NOMES->Nome, RAT( " ", cPesquisa ) + 1 ) = cPesquisa, 0, 1 ) } )
      lSeguinte := .T.
   ENDDO
Dessa forma a principio não precisa criar nenhum temporário o próprio vetor com asort resolve
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

duvida com OrdWildSeek

Mensagem por asimoes »

Outra modificação usando aEval

Código: Selecionar todos

   lSeguinte := .F.
   
   aNomesAux    := {}
   
   NOMES->( DbGoTop() ) //Tem que colocar o Go Top pra funcionar o OrdWildSeek
   
   cPesquisa := "FERNAND"
   
   DO WHILE NOMES->( OrdWildSeek( "*" + cPesquisa + "*", lSeguinte ) )
      aAdd( aNomesAux, { NOMES->Nome, IF( SubStr( NOMES->Nome, RAT( " ", cPesquisa ) + 1 ) = cPesquisa, 0, 1 ) } )
      lSeguinte := .T.
   ENDDO
   
   aSort( aNomesAux ,,, {|x,y| y[2] > x[2]} )
   
   aNomes := {} 
   
   aEval( aNomesAux, {|x,y| aAdd( aNomes, x[1] ) } )

   aChoice( 0, 0, 24, 79, aNomes )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

duvida com OrdWildSeek

Mensagem por fladimir »

Opa... q legal vou testar... Obrigado
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.
Responder