Rotina de Consulta por parte do nome

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Fernando Borges
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 29 Set 2004 16:43
Localização: Sacramento/MG

Rotina de Consulta por parte do nome

Mensagem 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.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Rotina de Consulta por parte do nome

Mensagem 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
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Re: Rotina de Consulta por parte do nome

Mensagem 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 



Responder