2016-08-19 47 views
0

试图将2个筛选器同时应用于子窗体。子窗体上的多个筛选器

想要查看日期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

试试这个:

.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),请检查它。

+0

将该行更改为以下并且它返回此消息:“标准展望中的数据类型不匹配”。 .Filter = “[DateDbl] BETWEEN” &Me.txtFromDbl& “和” &Me.txtToDbl& “和[F5] = '” &Me.cboAgDep& “'” 我不'吨使用#因为我的日期数量(双)格式,而不是mm/dd/yyyy,由于各种原因。 – Felps

+0

所以,[DateDbl]包含数字。什么是Me.txtFromDbl?我会使用'BETWEEN'&CLng(CDate(Me.txtFrom))&“AND ...',如果在txtForm中有普通文本格式的日期。并检查表字段的数据类型,它是cboAgDep的控制源。如果是数字,请删除单引号。 –

+0

也可以使用'Format(Me.txtFrom,“#”)来代替'CLng(CDate(Me.txtFrom))'' –

0

发现问题。

对日期范围使用BETWEEN和AND与第二个AND产生一些冲突,以便为字段F5添加过滤器。

所以我切换到使用> =和< =如下:

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

只是为了澄清,为以后可能出现的这个人,你应该使用#作为谢尔盖指出,如果你有日期字段,我的日期是双格式,所以我不需要。

谢谢,

+0

Datevalues应该包含在散列内:'#8/18/2016#' – 2016-08-19 02:52:13