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

时间:2019-03-21 17:25:47

标签: ms-access access-vba global-variables

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

我什至尝试了代码中的许多调整,但仍无济于事。

1 个答案:

答案 0 :(得分: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)