我在VBA定義爲這樣的功能:如何在訪問報告中使用過濾器字符串中的函數?
Function IsInWeek(RefDate As Date, checkDate As Date) As Boolean
StartDate = StartOfWeek(RefDate)
EndDte = EndOfWeek(RefDate)
If (checkDate >= StartDate And checkDate < Enddate) Then
IsInWeek = True
Else
IsInWeek = False
End If
End Function
我想使用它報告的過濾器子句中如下:
strFilte = "IsInWeek(#" + Format(InDate, "dd/mm/yyyy") + "#, CalanderDate)"
DoCmd.OpenReport ReportName, acViewPreview,
With Reports(ReportName)
.Filter = strFilter
.FilterOn = True
End With
但它不工作。該報告包含所有記錄。有什麼問題,我該如何解決?我正在使用access 2003.
注意:我可以使用之間的過濾器字符串來實現函數,但是我正在尋找爲什麼上述技術不起作用。
編輯1
這不是工作壓力太大:
strFilte = "IsInWeek(#" + Format(InDate, "dd/mm/yyyy") + "#, [CalanderDate])= True"
If Application.CurrentProject.AllReports(reportname).IsLoaded = True Then
DoCmd.Close acReport, reportname
End If
DoCmd.OpenReport reportname, acViewDesign, strFilter
DoCmd.OpenReport reportname, acViewPreview
如果將函數添加到報表源查詢中,您會得到正確的返回值嗎?只是想看看這是代碼問題還是報告過濾問題。本能告訴我後者,但只是想確定。 – VBlades
你有Option Explicit嗎?在您的初始代碼中,您將strFilte設置爲函數調用,但使用strFilter作爲過濾器。你有它再次你的編輯,所以我認爲這不是一個錯字。我一直在玩耍,在飛行時過濾應該起作用,這與我的記憶相反。也許它就像打字錯誤一樣簡單? – VBlades