我目前正在开发由前一名员工开发的Access数据库,并已根据需要引入该数据库以维护/调整系统。系统存储由员工完成的任务信息,并具有可创建的各种报表以查看度量标准。为了让这些报告更清楚地阅读这些报告,我想将“查看日期”添加到报告标题。传递给报告的表单信息
为了打开报告,管理员点击加载相应报告的“发件人”按钮(用于今天,昨天或特定的一天)。对于“今天”和“昨天”,我可以使用日期=日期()和=日期() - 1。但是,我在为特定日期做类似的事情时遇到了麻烦。
到目前为止,我的解决方案已经通过表单上的按钮按下,InputBox从管理器获取日期,月份和年份,以便在WHERE语句中生成当天的报表。我想在报告中使用这些值(dt,mo,yr),但我不确定要在报告中从vba代码中提取这些值。想法,或者不同的方式来接近它,将不胜感激!
当前的vba代码如下。从我读过的内容来看,有些技术可以创建一个临时查询/表格/表单来存储信息,然后再将其放回到报告中。或者有办法让这些变量“公开”,并从各个地方拉出来,但是这种方法现在已经过去了。
Private Sub SpecificSummary_Click()
Dim stDocName As String
Dim yr As Integer
Dim mo As Integer
Dim dt As Integer
mo = InputBox("Enter Month:")
dt = InputBox("Enter Day:")
yr = InputBox("Enter Year:")
stDocName = "SpecificSummary"
DoCmd.OpenReport stDocName, acViewPreview, , "((Year([TimeStamp])) = " & yr & ") And ((Month([TimeStamp])) = " & mo & ") And ((Day([TimeStamp])) = " & dt & ")"
End Sub
更多信息在RE:使用文本框HansUp
对于今天和昨天的报告,在报告标题中,我使用= DATE()的今天,和= DATE() - 1昨天。
更新:根据要求,以下是当前报告的当前代码/方法。
Private Sub TodaySummary_Click()
Dim today As Date
Dim stDocName As String
Dim yr As Integer
Dim mo As Integer
Dim dt As Integer
today = Date
yr = Year(today)
mo = Month(today)
dt = Day(today)
stDocName = "DailySummary"
DoCmd.OpenReport stDocName, acViewPreview, , "((Year([TimeStamp])) = " & yr & ") And ((Month([TimeStamp])) = " & mo & ") And ((Day([TimeStamp])) = " & dt & ")"
End Sub
在报告(TodaySummary),我用...
=Date()
打印出日期
我觉得我做这个更难比它应该是,和我一味地错过了使用日期的明显方法,而不是将其分解为年/月/日并以这种方式使用WHERE条件。
我试图帮助指导我的其中一篇文章,使用OpenArgs部分看起来有点令人困惑。 http://stackoverflow.com/questions/398804/how-do-i-pass-a-parameter-into-an-access-report-programatically – BadgerMotsu
@HansUp问题更新。将控件源的文本框中的报表标题中的值用作= Date()。是的,目前有三个单独的报告。 – BadgerMotsu
其他设计差异将在vba编码,而不是今天和今天的输入框使用下面的代码来满足WHERE条件。 今天=日期 年=年(今天) 月=月(今天) DT =日(今天) – BadgerMotsu