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