QV在日期的选择上不是很灵活,日期区段的选择可以在列表框中直接用鼠标拖拉区段,如果跨周期比较长了还是不是很方便啦。
下面介绍的方式是完全实现了起始日期的选择功能。
注:日期这个字段在抽取的时候一定要格式化成统一的格式,我这里统一都用YYYY-MM-DD这个格式!
相关的VBScript代码如下:
'调用日期处理函数 wilson 2011.08.17 修改
'调用方法,新建一个按钮---操作---新增--外部--执行宏--宏名称里填写 XF_CREATETIME即可。同一qvw文件下可以多个调用了哦。多加一个执行函数改变下date参数就可以。
function XF_CREATETIME
call BeginToEndDate("Date")
end function
function XF_STOREDS_TXDATE
call BeginToEndDate("XF_STOREDS_TXDATE")
end function
'时间段处理函数
function BeginToEndDate(Column)
Set daystart=ActiveDocument.Variables("StartDate")
Set dayend=ActiveDocument.Variables("EndDate")
Dim startstring,endstring,rangstring,differ
daystart=daystart.Getcontent.string
dayend=dayend.Getcontent.string
startstring=">="&daystart
endstring="<="&dayend
differ= DateDiff("d",daystart,dayend)
If Differ<0 then
msgbox "结束日期应该在开始日期以后!",,"错误提示:"
Else
rangstring=startstring&endstring
'msgbox rangstring
Set f=activedocument.fields(Column)
'一定要清空一下日期选择 否则只会在上次查询的结果中查询 具体是只清空选择的时间字段 还是clearall 可以依据自己的需要来设置
f.Clear
f.select rangstring
End if
end function
实现界面及相关控件设置:
一、定义了四个变量。
二、2个日历控件分别向变量SDate和EDate赋值,StartDate和EndDate分别格式化变量的值(图片太大了,可以直接在图片上点右键属性获取图片URL,然后新窗口打开看大图)。
如果结束日期在开始日期之前则提示错误。
日历变量赋值和格式相关设置。