在ACCESS 2007中,我有一个主表单,其中包含两个名为cmbStavOd
和cmbStavK
的未绑定组合框,两者都格式化为短日期。
我有一个名为frm_qryNaklady_subform
的子表单,它基于一个名为datNakladDatum
(文本框名称为datNakladDatum
)的字段的查询,格式为短日期。
我希望允许用户输入日期范围,并将子表单过滤为仅显示在主表单框中输入的日期范围的记录。
我在AfterUpdate事件中使用VBA代码,如:
Dim datRokMesiacOd As Date
Dim datRokMesiacDo As Date
Dim strFilterNaklady As String
datRokMesiacOd = DateSerial(Year(cmbStavOd), Month(cmbStavOd), 1) 'begin Date
datRokMesiacDo = DateSerial(Year(cmbStavK), Month(cmbStavK) + 1, 1) - 1 'end Date
strFilterNaklady = "[datNakladDatum] Between #" & datRokMesiacOd & "# And #" & datRokMesiacDo & "#"
With Me.frm_qryNaklady_subform.Form
.Filter = strFilterNaklady
.FilterOn = True
End With
例如,strFilterNaklady
的结果如下所示:"[datNakladDatum] Between #1. 1. 2015# And #31. 12. 2015#"
。
通过调试代码,我在语句:
With Me.frm_qryNaklady_subform.Form
.Filter = strFilterNaklady
.FilterOn = True
End With
错误3709 - 在任何记录中都找不到搜索键。
但基础查询包含大量符合输入日期范围的记录。
我整天都在使用日期过滤语法,但没有成功。
你看到我出错了吗?
答案 0 :(得分:0)
您需要正确的日期格式:
strFilterNaklady = "[datNakladDatum] Between #" & Format(datRokMesiacOd, "yyyy\/mm\/dd") & "# And #" & Format(datRokMesiacDo, "yyyy\/mm\/dd") & "#"
此外,这可以简化为:
datRokMesiacDo = DateSerial(Year(cmbStavK), Month(cmbStavK) + 1, 0) 'end Date