我确实有一个带有动态表单过滤器的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大师........所以要善良:-))
答案 0 :(得分:-1)
我想你可能只是缺少日期包装&#34;#&#34;。
尝试:
"([TaskStart] >= #" & Format(Me.DateStart, DMY) & "#) AND ([TaskEnd] < #" & Format(Me.DateEnd + 1, DMY) & "#)