Adelson (ADS e TI) Posted December 31, 2015 Report Share Posted December 31, 2015 Amigos, to com esse pequelo grande problemas, preciso filtrar um campo de nome LOCAL_30 com mais de uma condicional e mesmo parecendo certo só filtra a primeira condição. _opc2, _opc3 e _opc4 são .t. ou .f. a parte do filtro cloja_30 like'%"+ss_loja+"% tá funcionando perfeito porem a parte... and (local_30="+_f2+" or local_30="+_f3+" or local_30="+_f4+")" só filtra o que está aqui.... local_30="+_f2 e ignora o resto. O campo SQL não aceita mais de uma condicional? preciso que seja filtrado as 3 condicionais do campo LOCAL_30. if (_opc2 .and. _opc3 .and. _opc4) //--> Marcou 2 3 4 iFiltro:="cloja_30 like'%"+ss_loja+"%' and (local_30="+_f2+" or local_30="+_f3+" or local_30="+_f4+")" SR_SetFilter( iFiltro ) oDlg3:end() endif Agradeço desde já se alguém puder ajuda. Valeu. Ronaldbuch 1 Quote Link to comment Share on other sites More sharing options...
aokisantos Posted January 1, 2016 Report Share Posted January 1, 2016 Adelson, referente: and (local_30="+_f2+" or local_30="+_f3+" or local_30="+_f4+")" só filtra o que está aqui.... local_30="+_f2 e ignora o resto. como é um OR a primeira condição atendida ele não verificará as demais, não seria um AND que vc precisa? Caso realmente seja um OR, uma outra maneira de verificar seria com IN, ex: and local_30 IN (_f2, _f3, _f4 ) Outra coisa, caso esteas variaveis _f2 e demais sejam STRING, lembre-se de colocar entre aspas. Abraço, Quote Link to comment Share on other sites More sharing options...
Adelson (ADS e TI) Posted January 2, 2016 Author Report Share Posted January 2, 2016 Amigo, obrigado, foi de grande valia tua dica. Só mais um favor..... Para em filtrar um intervalo de datas do tipo variavel DATAINI e DATAFIM? Filtrar os intervalos de datas onde intervalo>=DATAINI and intevalo<=DATAFIM. Desde já agradeço. Quote Link to comment Share on other sites More sharing options...
aokisantos Posted January 3, 2016 Report Share Posted January 3, 2016 Amigo Adelson, acredito que vc pode usar o comando BETWEEN, ex: emissao BETWEEN "+ SQLDATE( dInicial )+ " and " + SQLDATE( dFinal ) Abraço Quote Link to comment Share on other sites More sharing options...
Adelson (ADS e TI) Posted January 3, 2016 Author Report Share Posted January 3, 2016 Amigo Adelson, acredito que vc pode usar o comando BETWEEN, ex: emissao BETWEEN "+ SQLDATE( dInicial )+ " and " + SQLDATE( dFinal ) Abraço Amigo funcionou com alguma modificação.... emissao between "+ dtos(dInicial) + " and " + dtos(dFinal) SQLDATE dave ser uma função externa sua que eu não tenho, rsssssss, porém com DTOS funcionou perfeito. Muito obrigado pela ajuda. Quote Link to comment Share on other sites More sharing options...
aokisantos Posted January 3, 2016 Report Share Posted January 3, 2016 /******************************************************************************/ Function SQLDate( dData ) /* */ Local cData if Empty(dData) cData:='00/00/0000' else cData:=DToC(dData) endif return("'"+substr(cData,7,4)+"-"+substr(cData,4,2)+"-"+substr(cData,1,2)+"'") Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.