ms访问使用全局变量将表单的文本框值传递给报表

问题描述 投票:0回答:1

我有一个名为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

我甚至在代码中尝试了很多调整,但还没有任何进展。

ms-access access-vba global-variables
1个回答
0
投票

代码应该读取函数:

=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)
© www.soinside.com 2019 - 2024. All rights reserved.