簡體   English   中英

如何在MS Access報告宏中使用VBA更改記錄源

[英]How to Change Record Source with VBA in MS Access Report Macro

所有,

在MS Access 2010中,我有一個鏈接到報表的表(今日已結算)。 我運行下面的VBA代碼,將報告導出到共享驅動器上的pdf。

Public Function exporttopdf()

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim MyFileName As String
Dim mypath As String
Dim temp As String

mypath = "S:\Dan\" & Format(Date, "mm-dd-yyyy") & "\"

If Dir(mypath, vbDirectory) = "" Then MkDir mypath

Set db = CurrentDb()

Set rs = CurrentDb.OpenRecordset("SELECT distinct [Settlement No] FROM [Today's Settled Jrnls]", dbOpenDynaset)

Do While Not rs.EOF

temp = rs("[Settlement No]")
MyFileName = rs("[Settlement No]") & ".PDF"



DoCmd.OpenReport "Settlement Report", acViewReport, , "[Settlement No]='" & temp & "'"
DoCmd.OutputTo acOutputReport, "", acFormatPDF, mypath & MyFileName
DoCmd.Close acReport, "Settlement Report"
rs.MoveNext

Loop

Set rs = Nothing
Set db = Nothing

End Function

這可行,但是我想將[Today's Settled Jrnls]表更改為另一個表[New Jrnls]。 新表具有完全相同的列和設置。 但是,當我在上面的select語句中更改表時,代碼會運行,但報告為空白。 我認為這是因為報告(和解報告)仍鏈接到舊表。 您知道如何使用VBA將報告鏈接到新表嗎?

只需在首次打開報告后添加RecordSource調用以指向新表:

' OPEN REPORT
DoCmd.OpenReport "Settlement Report", acViewReport
' ADJUST SOURCE
Reports![Settlement Report].Report.RecordSource = "SELECT * FROM [New Jrnls]"

' FILTER AND OUTPUT
DoCmd.OpenReport "Settlement Report", acViewReport, , "[Settlement No]='" & temp & "'"
DoCmd.OutputTo acOutputReport, "", acFormatPDF, mypath & MyFileName
DoCmd.Close acReport, "Settlement Report"

您可以輕松地將Reports的記錄源屬性設置為SQL String或將其綁定到表

您甚至可以使用諸如open之類的事件來設置

Me.RecordSource ="SELECT * FROM TBL"

在此處輸入圖片說明

在這里檢查此鏈接: https : //docs.microsoft.com/en-us/office/vba/api/access.report.recordsource

對於Parfat:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM