Página 1 de 1

Alternativa ao OrdWildSeek

Enviado: 20 Nov 2012 14:59
por frazato
Fiz está rotina para usar no lugar da OrdWildSeek que uso em todo o sistema mais não estava conseguindo usar ela para criar um indice temporario com esta situação e também usando o "$" não resolvia, e como ao meu ver ficou legal resolvi compartilhar.

Frazato

Código: Selecionar todos

**
* Desenvolvido por João Frazato
* 20/11/2012
*
*

Function Main()
Teste()
Return nil


Function teste()
Close all
  mProc      :='NESTLE*SADIA*SUKITA'
  lCondicaoE := .T.

  use c:\frazato\produto
  Index on Descricao to c:\temp\Rec10 ;
                            For (Jaf_OrdWildSeek(mProc,.T.))
                            
   Dbedit(00,0,24,79)
cLose all
return nil
 
//-----------------------------------------------------------------
Function JAF_OrdWildSeek(_mProc,lCondicaoE)
Local mProc := _mProc , x:= 0,nQtdTesteOk := 0
Local wOpcoes := {} , c := ''
Local lCondicaoE := _lCondicaoE
For i:= 1 to Len(mProc)
    If Substr(mProc,i,1)=='*'
       Aadd(wOpcoes,c)
       c:=''
    Else
        c+= Substr(mProc,i,1)
    Endif
Next
Aadd(wOpcoes,c)

For x:= 1 to Len(wOpcoes)
        mProc := wOpcoes[x]
        If Substr(Descricao,At(mProc,Descricao),Len(mProc))==mProc
           nQtdTesteOk++
           If lCondicaoE==.t.
              Return .t.
           Endif
        endif
Next
Return Iif(nQtdTesteOk>=Len(wOpcoes),.t.,.f.)

Alternativa ao OrdWildSeek

Enviado: 20 Nov 2012 15:09
por JoséQuintas
Legal, uso algo parecido nas minhas pesquisas.
Não sei se fica mais rápido:

Trocar isto:
Substr(Descricao,At(mProc,Descricao),Len(mProc))==mProc

Por isto:
mProc $ Descricao