Jump to content
Fivewin Brasil

TDolphin - Query com filtro por Período - Resolvido


Valdir

Recommended Posts

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.

Link to comment
Share on other sites

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;

Link to comment
Share on other sites

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  '

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...