Valdir Posted June 7, 2016 Report Share Posted June 7, 2016 Olá pessoal... Boa tarde. Em DBF quando queria filtrar os registros dentro de um período, fazia assim : Local vINI:="01/01/2014", vFIM:="31/12/2014" USE APAGAR ALIAS APA EXCLUSIVE NEW dbSelectArea("Apa") Apa->(DbGoTop() INDEX ON Apa->DATAPG Tag dPg to ApaTmp FOR Apa->DataPG >= vINI .and. Apa->DataPg <= vFIM Como faço isso em SQL ? Obrigado. Quote Link to comment Share on other sites More sharing options...
evandro Posted June 7, 2016 Report Share Posted June 7, 2016 Olá, Grande Valdir. Até que enfim resolveu trabalhar! Você está precisando de "brincar" com o SQL. A resposta para o que você precisa é bem simples e estas "brincadeiras" já teriam de dado a resposta. Se for para apagar os registros, faça assim: delete from apagar where datapg between vIni and vFim; Quote Link to comment Share on other sites More sharing options...
marcioe Posted June 7, 2016 Report Share Posted June 7, 2016 para filtros use mais ou menos assim BETWEEN cQuery:= ' select a_cab_nf.*, ' cQuery:= cQuery + ' a_cli.CLICOD, a_cli.CLINOM, a_cli.CLIEND, a_cli.CLIBAI, a_cli.CLICEP, a_cli.CLICPF, a_cli.CLIFON, a_cli.E_MAIL as EMAIL_CLIENTES, a_cli.CODIGO_MUNICIPIO as CODIGO_CIDADE_DESTINO ' cQuery:= cQuery + ' from t_nf_saida as a_cab_nf ' cQuery:= cQuery + ' LEFT JOIN clientes AS a_cli ON a_cab_nf.CODIGO_CLIENTE = a_cli.CLICOD ' cQuery:= cQuery + ' WHERE a_cab_nf.SERIE_NF = ' + TRANSFORMA_SQL(T_SERIE_NF_FILTRO,'T',03,0) cQuery:= cQuery + ' AND a_cab_nf.MODELO_DOCUMENTO = ' + TRANSFORMA_SQL(SUBSTR(ALLTRIM(T_ESPECIE_NF_EMPRESA),01,02),'T',02,0) cQuery:= cQuery + ' AND a_cab_nf.DATA_EMISSAO BETWEEN ' + TRANSFORMA_SQL(T_DATA_INI_FAT,'D',08,0) + ' AND ' + TRANSFORMA_SQL(T_DATA_FIM_FAT,'D',08,0) cQuery:= cQuery + ' ORDER BY a_cab_nf.MODELO_DOCUMENTO + a_cab_nf.NUMERO_NF DESC ' Quote Link to comment Share on other sites More sharing options...
Valdir Posted June 7, 2016 Author Report Share Posted June 7, 2016 Amigos... Evandro: kkkkkkkk É difícil quebrar paradigmas antigos e como sou jovem, ainda aprendo esse treco. Márcio: Valeu, Obrigado. Abraços Quote Link to comment Share on other sites More sharing options...
Valdir Posted June 7, 2016 Author Report Share Posted June 7, 2016 Pessoal... Se alguém precisar, resolvi assim : oQry = oServer:query( "SELECT * FROM aPagar WHERE DataPg>= &vINI AND DataPg <= &vFIM" ) Como diz meu grande amigo Evandro... É melzinho na chupeta. Obrigado à todos. Abrs. Quote Link to comment Share on other sites More sharing options...
marcioe Posted June 7, 2016 Report Share Posted June 7, 2016 use assim amigo DataPg BETWEEN ' + (&vINI) + ' AND ' + (&vFIM) Quote Link to comment Share on other sites More sharing options...
Valdir Posted June 15, 2016 Author Report Share Posted June 15, 2016 Pessoal... Não consigo entender porque a query com a cláusula Between não funfa com variáveis... Tenho um Relatório por Período onde o Usuário deve informar as datas para filtragem : Local wINICIO:="", wFINAL:="", wINI:="", wFIM:="" Local vINI:=DATE(), vFIM:=DATE() @ 10,10 GET vINI PICTURE "@D".... onde será digitado "01/12/2014" @ 11,10 GET vFIM PICTURE "@D"... onde será digitado "31/12/2014" wINICIO := STRZERO(YEAR(vINI),4)+"-"+STRZERO(MONTH(vINI),2)+"-"+STRZERO(DAY(vINI),2) wFINAL := STRZERO(YEAR(vFIM),4)+"-"+STRZERO(MONTH(vFIM),2)+"-"+STRZERO(DAY(vFIM),2) wINI := wINICIO wFIM := wFINAL As variáveis ficam assim: wINI = "2014-12-01" wFIM = "2014-12-31" oQry1 = oServer:Query( "SELECT * FROM vendas WHERE dataven BETWEEN 'wINI' AND 'wFIM'" ) Assim não filtra nada. oQry1 = oServer:Query( "SELECT * FROM vendas WHERE dataven BETWEEN '2014-12-01' AND '2014-12-31'" ) Assim realiza perfeitamente o filtro Por favor, qual a diferença ? Obrigado. Quote Link to comment Share on other sites More sharing options...
evandro Posted June 15, 2016 Report Share Posted June 15, 2016 Olá, Tente assim: oQry1 = oServer:Query( "SELECT * FROM vendas WHERE dataven BETWEEN '"+wINI+'" AND '"+wFIM+"' " ) Quote Link to comment Share on other sites More sharing options...
Valdir Posted June 16, 2016 Author Report Share Posted June 16, 2016 Grande amigo Evandro... Agora funfou certinho... Obrigado. 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.