我目前正在開發由前一名員工開發的Access數據庫,並已根據需要引入該數據庫以維護/調整系統。系統存儲由員工完成的任務信息,並具有可創建的各種報表以查看度量標準。爲了讓這些報告更清楚地閱讀這些報告,我想將「查看日期」添加到報告標題。傳遞給報告的表單信息
爲了打開報告,管理員點擊加載相應報告的「發件人」按鈕(用於今天,昨天或特定的一天)。對於「今天」和「昨天」,我可以使用日期=日期()和=日期() - 1。但是,我在爲特定日期做類似的事情時遇到了麻煩。
到目前爲止,我的解決方案已經通過表單上的按鈕按下,InputBox從管理器獲取日期,月份和年份,以便在WHERE語句中生成當天的報表。我想在報告中使用這些值(dt,mo,yr),但我不確定要在報告中從vba代碼中提取這些值。想法,或者不同的方式來接近它,將不勝感激!
當前的vba代碼如下。從我讀過的內容來看,有些技術可以創建一個臨時查詢/表格/表單來存儲信息,然後再將其放回到報告中。或者有辦法讓這些變量「公開」,並從各個地方拉出來,但是這種方法現在已經過去了。
Private Sub SpecificSummary_Click()
Dim stDocName As String
Dim yr As Integer
Dim mo As Integer
Dim dt As Integer
mo = InputBox("Enter Month:")
dt = InputBox("Enter Day:")
yr = InputBox("Enter Year:")
stDocName = "SpecificSummary"
DoCmd.OpenReport stDocName, acViewPreview, , "((Year([TimeStamp])) = " & yr & ") And ((Month([TimeStamp])) = " & mo & ") And ((Day([TimeStamp])) = " & dt & ")"
End Sub
更多信息在RE:使用文本框HansUp
對於今天和昨天的報告,在報告標題中,我使用= DATE()的今天,和= DATE() - 1昨天。
更新:根據要求,以下是當前報告的當前代碼/方法。
Private Sub TodaySummary_Click()
Dim today As Date
Dim stDocName As String
Dim yr As Integer
Dim mo As Integer
Dim dt As Integer
today = Date
yr = Year(today)
mo = Month(today)
dt = Day(today)
stDocName = "DailySummary"
DoCmd.OpenReport stDocName, acViewPreview, , "((Year([TimeStamp])) = " & yr & ") And ((Month([TimeStamp])) = " & mo & ") And ((Day([TimeStamp])) = " & dt & ")"
End Sub
在報告(TodaySummary),我用...
=Date()
打印出日期
我覺得我做這個更難比它應該是,和我一味地錯過了使用日期的明顯方法,而不是將其分解爲年/月/日並以這種方式使用WHERE條件。
我試圖幫助指導我的其中一篇文章,使用OpenArgs部分看起來有點令人困惑。 http://stackoverflow.com/questions/398804/how-do-i-pass-a-parameter-into-an-access-report-programatically – BadgerMotsu
@HansUp問題更新。將控件源的文本框中的報表標題中的值用作= Date()。是的,目前有三個單獨的報告。 – BadgerMotsu
其他設計差異將在vba編碼,而不是今天和今天的輸入框使用下面的代碼來滿足WHERE條件。 今天=日期 年=年(今天) 月=月(今天) DT =日(今天) – BadgerMotsu