Página 1 de 1

Rotina de Consulta por parte do nome

Enviado: 13 Mar 2010 11:18
por Fernando Borges
Pessoal, bom dia. Preciso de uma ajuda. Tenho um sistema de controle de estoque e o cliente me pediu para criar uma rotina onde ele possa consultar os produtos por parte da descrição do produto. Por exemplo preciso encontrar todos os produtos que tenha a palavra "knorr" na descrição, independente de ser no inicio, no meio ou final da descrição. Não sei como fazer isso. Alguém poderia me ajudar.

Agradeço a atenção de todos.

Fernando Borges.

Rotina de Consulta por parte do nome

Enviado: 13 Mar 2010 12:28
por Pablo César
Fernando, aconselho utilizar um TBROWSE e de ser possível uma RDD SIX para trabalhar a função sx_WildSeek() você vai encontrar explicação do uso neste tópico: https://pctoledo.org/forum/viewto ... rt=0#p1820 (mas seria opcional o seu uso).

Para ver Exemplos de TBROWSE faça uma pesquisa no fórum a clique em "Busca" do menu.

Também acho que existe um exemplo de TBROWSE que mostra conforme vai digitando (na seção de "Downloads"), daí pode ser implementado uma função de pesquisa por substring, caso o exemplo já não o possua, confira em: https://pctoledo.org/download/visualiza.zip

Re: Rotina de Consulta por parte do nome

Enviado: 13 Mar 2010 19:47
por rosalvo rosa
Tente usar esta funcao:

Código: Selecionar todos


Func Localiza()
   Use(cSel) / cSel = Arquivo.dbf
   c_word:= Space(15)
   @ 06, 10 Say "Escreva uma palavra ou sílaba que deva existir "
   @ 07, 10 Say "em qualquer campo, como endereço, comentários, etc.. "
   @ 10, 10 Get c_word
   Read
   Clear Screen
   c_word:= UPPER(AllTrim(c_word))
   If Empty(c_word) .OR. LastKey() = 27
      Close All
      SetColor(antSC)
      Return
   EndIf
   mFields:= Array(FCount())
   AFIELDS(mFields)
   Select(cSel)
   Set Order To 1
   Go Top
   While !Empty(c_word) .AND. !Eof()
      n_word:= 0
      For nField:=1 To FCount()
         cCampo:= (cSel)->(Field(nField))
         If Type(Field(nField)) = "C"
            n_word:= AT("&c_word", UPPER((cSel)->&cCampo))
         EndIf
         If n_word <> 0
            Exit
         EndIf
      Next   
      If n_word <> 0
          AAdd(m_nomes,{(cSel)->&cCampo})
      EndIf
      Skip
   EndDo
   If Len(m_nomes) = 0
      @ 10,  10 Say Alert(" não encontrado ")
      SetColor(antSC)
      Return
   Else 
      For i:=1 To Len(m_nomes)
         @   1 + i,02 Say  m_nomes[i][1]
      Next
   EndIf