表格信息传递给报告

时间:2016-07-07 18:09:33

标签: ms-access access-vba

我目前正在开发一个由前一名员工开发的Access数据库,并已根据需要介绍维护/调整系统。系统存储员工完成的任务的信息,并具有可以创建的各种报告以查看指标。为了使那些阅读它们的人能够更清楚地了解这些报告,我想添加"查看日期"报告标题。

为了打开报告,经理点击加载相应报告的“发件人”按钮(今天,昨天或特定日)。对于这两个"今天"和"昨天",我能够将日期设置为使用= Date()和= Date() - 1。但是,我在为特定日期做类似事情时遇到了麻烦。

到目前为止,我的解决方案是通过表单上的按钮按下,InputBox从管理器获取日,月和年,以在WHERE语句中生成当天的报告。我想在报告中使用这些值(dt,mo,yr),但我不确定要在报告中放入什么来从vba代码中提取这些值。对此的想法,或者采用不同的方法,我们将不胜感激!

目前的vba代码如下。根据我的阅读,有一些技术可以创建临时查询/表格/表格来存储信息,然后将其拉回报告中。或者有办法制作这些变量" Public"并且从各个地方被拉出来,但这种方法目前在我的头上。

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条件的明显方法。

1 个答案:

答案 0 :(得分:0)

我现在得到了 - 我以为你对所有查询都使用相同的报告 - 这当然是可能的。

但是如果您想要做的就是动态更改报表头中的文本字段 - 您当然可以这样做。

在您的报告中,编辑使用REPORT_LOAD活动
打开Report_Load事件
然后编辑事件看起来像:

Private Sub Report_Load()
    Dim strTextDate As String
    strTextDate = Nz(Me.Report.OpenArgs, "")

    ' Replace "Text5" with your control
    Text5.Value = strTextDate
End Sub

将您的代码更改为:

Dim stDocName As String
Dim yr As Integer
Dim mo As Integer
Dim dt As Integer

Dim strTextDate As String

mo = InputBox("Enter Month:")
dt = InputBox("Enter Day:")
yr = InputBox("Enter Year:")

' Change this to match your date format
strTextDate = "" & yr & "-" & mo & "-" & dt

stDocName = "SpecificSummary"

' Add date to last OpenArgs parameter of OpenReport
DoCmd.OpenReport stDocName, acViewPreview, , , acWindowNormal, strTextDate

确保在运行代码之前关闭并保存报表设计