子表单上的多个过滤器

时间:2016-08-19 01:59:14

标签: vba ms-access access-vba

尝试同时将2个过滤器应用于子表单。

想要查看DATES X和Y之间以及BRANCH Z之间的记录。

单独工作,但不能同时使用两者。我知道这是

当前代码:

Private Sub Command39_Click()
If IsNull(Me.txtFrom) Or IsNull(Me.txtTo) Then
    MsgBox "Insert date!"
Else
    With Me.frmDailyRevenue.Form
        .Filter = "[DateDbl] BETWEEN " & Me.txtFromDbl & " AND " & Me.txtToDbl & "" And [F5] = " & Me.cboBranch & """
        .FilterOn = True
    End With
  End If 
End Sub

这基本上是我从网上得到的一些代码,因为我对此非常陌生。

所以,欢迎提出所有建议。

2 个答案:

答案 0 :(得分:2)

试试这个:

.Filter = "[DateDbl] BETWEEN #" & Format(Me.txtFromDbl,"mm\/dd\/yyyy") & _
     "# AND #" & Format(Me.txtToDbl,"mm\/dd\/yyyy") & "# And [F5] = '" & Me.cboBranch & "'"

我认为Me.cboBranch是文本。如果此字段包含代码,请删除单引号。

另外我注意到你检查和控制你从中获取数据的控制是不同的(Me.txtFrom和Me.txtFromDbl,Me.txtTo和Me.txtToDbl),检查一下。

答案 1 :(得分:0)

发现问题。

在日期范围内使用BETWEEN和AND导致与第二个AND发生冲突,为字段F5添加过滤器。

所以我转而使用> =和< =如下:

.Filter = "[DateDbl] >= " & Me.txtFromDbl & " AND [DateDbl] <= " & Me.txtToDbl & " AND [F5] = " & Me.cboBranch & ""

只是为了澄清一下,对于那些可能会在以后出现这种情况的人,你应该使用#,如果你有一个日期字段,谢尔盖指出,我的日期是双重格式,所以我不需要。

谢谢,