访问:将源对象设置为另一个源对象路径

时间:2015-06-10 17:46:37

标签: vba ms-access access-vba

我正在尝试再次疯狂的事情。我想使用这行代码:

Reports![PrntRep].SourceObject = Forms![Search Form]!Subform1.SourceObject

subform1的源对象是动态的,具体取决于您需要搜索的查询。我希望将报告的源设置为相同的查询,这样我就不需要制作一堆不同的报告。 它抛出错误2465,应用程序定义或对象定义错误。

1 个答案:

答案 0 :(得分:2)

报告没有SourceObject属性。这就是Access在您尝试引用错误时抛出错误#2465,“应用程序定义或对象定义的错误”的原因。

这是我系统的立即窗口示例:

' first demonstrate the report is accessible ...
Debug.Print Reports!rptFoo.Name
rptFoo 
' now when referencing SourceObject ...
Debug.Print Reports!rptFoo.SourceObject ' <-- error 2465

也许你想改变报告的RecordSource而不是:

' current RecordSource ...
Debug.Print Reports!rptFoo.RecordSource
SELECT rmy.id, rmy.reportDate, rmy.gainOrLoss FROM record_matYields AS rmy;
' change RecordSource to a saved query ...
Reports!rptFoo.RecordSource = "qryBar"
' confirm RecordSource was altered ...
Debug.Print Reports!rptFoo.RecordSource
qryBar

报告显示原始RecordSource的6行。保存的查询包含WHERE条件,该条件将结果限制为仅有2行。因此,如上所述更改RecordSource导致报告仅显示那两行而不强制报告进入设计模式,这与您在评论中提到的宏方法不同。

不幸的是,我不太了解宏来帮助你解决问题。我主要避免使用宏。