ms-access - ms 访问使用全局变量将表单的文本框值传递给报表
问题描述
我有一个名为 frm_Reports 的表单,我正在使用不同的组合框打开不同类型的报表。在报告的末尾,我有一个文本框,我在其中总结报告中的记录并显示这样的语句
从 2019 年 3 月 1 日星期五到 2019 年 3 月 21 日星期四,325 名患者从上述部门进入实验室测试
我有以下表达式来显示此语句
=Sum([CountOfPatientID]) & " patients entered from above grouped departments for lab tests from " & Format([GetSDV],"dddd"", ""dd mmmm yyyy") & " to " & Format([GetEDV],"dddd dd mmmm yyyy")
GetSDV 和 GetEDV 是公共函数。
我正在尝试从打开报告的表单上的文本框中获取声明中的日期。
我知道我必须在变量周围使用全局变量和包装函数才能在语句中输入日期值。但是当我尝试打开报告时,日期值没有被拾取,它要求我输入函数的参数值。
这是我正在尝试执行此操作的代码
Option Compare Database
Global SDV As Date
Global EDV As Date
Public Function GetSDV()
GetSDV = SDV
End Function
Public Function GetEDV()
GetEDV = EDV
End Function
Private Sub Form_Open(Cancel As Integer)
GetSDV
GetEDV
End Sub
Public Sub btn_PatientCount_Click()
CheckForSDNulls
CheckForEDNulls
SDV = Me.txt_StartDate
EDV = Me.txt_EndDate
If IsNull(Me.cbo_PatientCount) Then
MsgBox "Please select a report from the dropdown menu.", vbInformation, "No Report Selected"
Exit Sub
Else: DoCmd.OpenReport cbo_PatientCount.Column(1), acViewPreview, "", , acWindowNormal
End If
End Sub
我什至在代码中尝试了许多调整,但仍然没有成功。
解决方案
代码应读取功能:
=Sum([CountOfPatientID]) & " patients entered from above grouped departments for lab tests from " & Format(GetSDV(),"dddd"", ""dd mmmm yyyy") & " to " & Format(GetEDV(),"dddd dd mmmm yyyy")
这可以优化:
Public Function GetSDV() As Date
GetSDV = SDV
End Function
Public Function GetEDV() As Date
GetEDV = EDV
End Function
什么都不做。
Private Sub Form_Open(Cancel As Integer)
GetSDV
GetEDV
End Sub
并将日期格式应用于文本框的Format属性 - 或转换为日期:
SDV = CDate(Me!txt_StartDate.Value)
EDV = CDate(Me!txt_EndDate.Value)