通过主窗体过滤子窗体日期列vba访问中的日期范围条目

时间:2017-04-12 13:39:25

标签: sql vba access-vba date-range subform

我有一个名为frmCCAuto的表单,其中包含我的日期范围,即开始日期和结束日期文本字段以及用于过滤日期的按钮。我有一个子表单" subCCAuto-Open" (我不知道为什么我的老年人决定使用子表格名称' - ')其默认视图是数据表,其记录源是从表tblPayments_Auto中提取的。因此,我必须根据主窗体中的日期范围过滤子窗体中显示的记录。换句话说,我想要发生的是在两个未绑定的文本框上允许用户输入日期范围并将子表单过滤为仅显示在主表单框中输入的日期范围的记录。我一直在努力的代码是:

Private Sub Form_Open(Cancel As Integer)
    Dim db As Database
    Set db = CodeDb

    db.Execute "DELETE * FROM tblPayments_Auto;"
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "qryPayments_AddAuto" (store procedure: sp_qryPayments_AddAuto )
    DoCmd.SetWarnings True

    Me.subOpen.Requery
    ProcessBtn.Enabled = False
End Sub

Private Sub Filter_Click()
    With Forms!frmCCAuto![subCCAuto-Open].Form
        .Filter = "[InvoiceDate] BETWEEN #" & Me.StartDate & "# AND #" & Me.EndDate & "#"
        .FilterOn = True
    End With
End Sub

当我调试我的代码时,它会给我一个错误,说Microsoft Access can't find the field subCCAuto-Open referred to in your expression.请帮忙。

1 个答案:

答案 0 :(得分:0)

尝试使用修改后的语法:

Private Sub Filter_Click()
    With Forms!frmCCAuto.Form![subCCAuto-Open]
        .Filter = "[InvoiceDate] BETWEEN #" & Format(Me!StartDate.Value, "yyyy\/mm\/dd") & "# AND #" & Format(Me!EndDate.Value, "yyyy\/mm\/dd") & "#"
        .FilterOn = True
    End With
End Sub

其中frmCCAuto必须是子表单控件的名称。