2015-05-25 59 views
0

我確實有一個使用許多控件作爲標準的動態窗體過濾器的Access窗體。就好除外我的日期範圍內的所有工作......下面是一段代碼,我使用..MS 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

我想你可能只是缺少日期包裝「#」。

嘗試:

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

不,我錯了。應該更仔細地閱讀你的代碼。你的常量有日期包裝。抱歉。 - MrE – MrE

+0

您好MrE這就是這部分代碼作爲一個常量 Const DMY =「\ #dd \/mm \/yyyy \#」 在我的調試器控制這裏是結果: ([TaskStart]> =#01/05/2015#)和([TaskEnd] <#01/06/2015#) 我真的在撓撓我的腦袋...... –

+0

這次做了更多的功課。這很奇怪,但我通過刪除WHERE關鍵字來實現它:Me.Filter =「[StartDate]> =#05/05/1970」發現它在http://answers.microsoft.com/en-us/ office/forum/office_2003-access/mefilter/c07d6930-2ace-46c0-a3e6-e16a2c686500 - 希望有所幫助,但可能會對其他過濾器造成麻煩。 – MrE