MS Access表格筛选日期范围

时间:2015-05-25 20:00:48

标签: access-vba

我确实有一个带有动态表单过滤器的Access表单,其中使用了许多控件作为标准。所有的工作都很好,除了我的日期范围...这是我正在使用的代码片段..

Private Sub Command4_Click()

Dim strWhere As String
Dim lngLen As Long
Const DMY = "\#dd\/mm\/yyyy\#"

'***********************************************************************

If Not IsNull(Me.PerPNum) Then
    strWhere = "([PNum] = " & Me.PerPNum & ") AND "
End If

If Not IsNull(Me.PerPPro) Then
    strWhere = strWhere & "([PPro] =  " & Me.PerPPro & ") AND "
End If

If Not IsNull(Me.PerPRev) Then
    strWhere = strWhere & "([PRev] = " & Me.PerPRev & ") AND "
End If

If Not IsNull(Me.PerDesi) Then
    strWhere = strWhere & "([Uinit] = """ & Me.PerDesi & """) AND "
End If


If Not IsNull(Me.DateStart) Then
    strWhere = strWhere & "([TaskStart] >= " & Format(Me.DateStart, DMY) & ") AND "
End If

If Not IsNull(Me.DateEnd) Then
    strWhere = strWhere & "([TaskEnd] < " & Format(Me.DateEnd + 1, DMY) & ") AND "
End If


lngLen = Len(strWhere) - 5
If lngLen <= 0 Then
    MsgBox "No criteria", vbInformation, "Nothing to do."
Else

strWhere = Left(strWhere, lngLen)

Me.Debug.Value = strWhere
    Me.Sub_Desi_Schedule.Form.Filter = strWhere
    Me.Sub_Desi_Schedule.Form.FilterOn = True
End If

当我看到“debuger”时,WHERE标准似乎没问题。

Howerver我仍然会收到“输入参数值”,即使重新输入也不会显示任何内容。

如果我的表单过滤器上没有使用日期范围,一切都会顺利进行。

建议,想法更受欢迎。 (请记住,我不是VB大师........所以要善良:-))

1 个答案:

答案 0 :(得分:-1)

我想你可能只是缺少日期包装&#34;#&#34;。

尝试:

"([TaskStart] >= #" & Format(Me.DateStart, DMY) & "#) AND ([TaskEnd] < #" & Format(Me.DateEnd + 1, DMY) & "#)