Ms access 如何在MS Access报表宏中使用VBA更改记录源

Ms access 如何在MS Access报表宏中使用VBA更改记录源,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,全部, 在MS Access 2010中,我有一个链接到报告的表(今天已结算的JRNL)。我运行下面的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(D

全部,

在MS Access 2010中,我有一个链接到报告的表(今天已结算的JRNL)。我运行下面的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
这是可行的,但我想将[今天已解决的Jrnls]表更改为另一个表[新的Jrnls]。新表具有完全相同的列和设置。但是,当我在上面的select语句中更改表时,代码将运行,但报告为空。我假设这是因为报告(结算报告)仍然链接到旧表。您知道如何使用VBA将报表链接到新表吗


Dan

您可以轻松地将Reports recordsource属性设置为SQL字符串或将其绑定到表

您甚至可以使用opentoset之类的事件

Me.RecordSource ="SELECT * FROM TBL"

点击此处查看此链接:

对于帕尔法特:


只需添加一个
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"

代码可能不在报表后面,无法访问Me.RecordSource。使用绝对引用。@Parfait IDK它似乎有它给meGreat!很乐意帮忙。