在Access 2007 VBA中,未保存的表单和报表是否可以键入为“AccessObject”..?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Access 2007 VBA中,未保存的表单和报表是否可以键入为“AccessObject”..?相关的知识,希望对你有一定的参考价值。
我在Access 2007 VBA中,创建代码,用于在设计视图中自动化窗体和报表上的控件的布局和格式。
为了简化我的代码,我试图将表单和报告作为一个常见的根类型引用,因此单个变量“thisDoc”可以引用它们。我以为那会是“AccessObject”,但似乎没有。我得到运行时错误#13,类型不匹配。
表单和报告是否具有共同的根类型?如果是这样,它是什么......?
类型“对象”当然是可能的,但我更喜欢在Access对象层次结构中更接近子节点的东西。这是为了避免后期绑定,并满足我的OCD,但主要是为了让IntelliSense正常工作。
这是问题所在:我的代码访问当前屏幕上的活动表单或报表,可能尚未保存。因此,它们尚未出现在AllForms或AllReports中。在动态表格/报告的情况下,他们永远不会。
以下是封装问题的示例代码:
dim app as Access.Application
dim scr as Access.Screen
dim thisDoc as Access.AccessObject 'but "As Object" works ok.
set app = Access.Application
set scr = app.Screen
set thisDoc = scr.ActiveReport 'or .ActiveForm
'Runtime error #13: Type Mismatch.
如上所述,vartype“Object”有效,但正如我上面提到的,我想至少得到一个Access对象层次结构中的类型。
不,Report
和Form
对象之间没有共同的界面(当然,除了Object
,它可以用于任何对象。
AccessObject
界面不像您通常使用的那样用于表单和报表。您无法通过它访问控件之类的内容。它主要用于迭代数据库对象(因为您可以使用通用接口来迭代表单,宏,模块和报告)。
如果您想要修改动态创建的表单和报表,并希望将它们存储在同一个变量中,那么您只能使用Object
类型(或Variant
,但这更不具体)。
以上是关于在Access 2007 VBA中,未保存的表单和报表是否可以键入为“AccessObject”..?的主要内容,如果未能解决你的问题,请参考以下文章
Access 2007 / VBA - 多个表单实例,从模块更新特定实例的控件
Access 2007 VBA:构建一个列表框,其中包含来自另一个列表框的选择选项