Página 1 de 1

SET FILTER, filtar de acordo com as informações lidas

Enviado: 21 Abr 2006 21:28
por smith
Gostaria de filtar o arquivo de acordo com as informações lidas:

estou tentando algo deste tipo mas não funciona !

IF .NOT. EMPTY(VAR1)
PESQUISA= ALLTRIM(VAR1) + " $ CAMPO1 .AND."
ENDIF

IF .NOT. EMPTY(VAR2)
PESQUISA= PESQUISA + ALLTRIM(VAR2) + " $ CAMPO2 .AND."
ENDIF

no final eu retiro os últimos 5 caracteres (.AND.) e faço:
SET FILTER TO PESQUISA

mas não retorna nada !
Alguém pode me ajudar ???
Desde já muito obrigado.

Enviado: 22 Abr 2006 10:50
por Jarbas
Smith, acho q o seu problema está no .AND. Pq qdo vc diz :

Set filter 'jarbas' $ campo1 .and. 'smith' $ camp2 , isto só vai dar certo se for satisfeito as duas condicoes , isto é obrigatoriamente 'jarbas' terá q estar contido no campo1 e 'smith' no campo2, tente usar o .OR.

Outra dica, pra vc nao precisar tirar o .and. ou .or. do final use assim :

IF .NOT. EMPTY(VAR1)
PESQUISA= ALLTRIM(VAR1) + " $ CAMPO1 "
ENDIF

IF .NOT. EMPTY(VAR2)
PESQUISA= PESQUISA + " .AND." + ALLTRIM(VAR2) + " $ CAMPO2 "
ENDIF

Até mais

Enviado: 22 Abr 2006 20:01
por smith
vamos por parte !

assim funciona:
SET FILTER TO alltrim(PESQNOME) $ CLIENTE

assim não:
IF .NOT. EMPTY(PESQNOME)
PESQUISA=ALLTRIM(PESQNOME) + " $ CLIENTE"
ENDIF
SET FILTER TO PESQUISA

alguém sabe porque ???

Enviado: 24 Abr 2006 00:38
por Stanis Luksys
Olá,

Veja a diferença na sintaxe entre as duas linhas:

SET FILTER TO alltrim(PESQNOME) $ CLIENTE

PESQUISA=ALLTRIM(PESQNOME) + " $ CLIENTE"

O operador $ seria algo como "contém em".

No primeiro caso vc verifica se o conteudo de PESQNOME está CONTIDO em CLIENTE.

Na segunda sentença você cria uma string, se por exemplo seu PESQNOME é "JOÃO", vc estará filtrando seu banco por nomes que sejam iguais a "JOÃO $ CLIENTE" e dificilmente você irá encontrar alguém com tal nome.

Ok...

Enviado: 24 Abr 2006 13:34
por digitom
Acho que se você usar um macro talvez funcione


IF .NOT. EMPTY(VAR1)
PESQUISA := ALLTRIM(VAR1) + " $ CAMPO1 "
ENDIF

IF .NOT. EMPTY(VAR2)
PESQUISA= PESQUISA + " .AND." + ALLTRIM(VAR2) + " $ CAMPO2 "
ENDIF

SET FILTER TO &PESQUISA

Enviado: 24 Abr 2006 23:32
por smith
Obrigado a todos pela ajuda !
Baseado nas informações de vc's eu resolvi ( aparentemente ) esta etapa.
Obrigado mesmo !
Até.