Access VBA教程:范围和对象命名的兼容性

Visual Basic 的范围规则将影响为对象、模块和过程选择的名称。

同名的模块和其他对象

在命名模块时,应避免将模块的名称以 Form_ 或 Report_ 开头,因为以此方式命名模块,会与那些为窗体和报表编写的已有的代码发生冲突。

如果在一个应用程序中有一个模块,而该应用程序是在 Microsoft Access 的 1.x 或 2.0 版本中创建的,这些版本不遵循上述命名规则,那么试图转换该应用程序时,Microsoft Access 将产生错误。例如,Microsoft Access 1.x 或 2.0 版数据库中的名为 Form_Orders 的模块将导致出错,在转换该模块之前,Microsoft Access 会要求对模块重命名。

同名的模块和过程

虽然不建议这种用法,但还是可以使用与模块同名的过程。若要在应用程序的表达式中调用该过程,必须使用过程的完整名称,包括模块名称和过程名称,如下例所示:


IsLoaded.IsLoaded("Orders")

注意  在宏的 Runcode 操作中这种方法不可用。宏不能访问与模块同名的过程。

同名的过程和控件

如果从窗体调用一个过程,而该过程与窗体上的控件同名,则必须使用过程所在的模块的名称来完整地标识该过程。例如,要调用名为 PrintInvoice 的过程,该过程保存在名为 Utilities 的标准模块中,而在相同的窗体上有一个名为 PrintInvoice 的按钮,则当从窗体或窗体模块中调用该过程时,应使用完整的名称Utilities.PrintInvoice

名称相似的控件

如果一个控件名称与已有的控件名称只差一个空格或符号,那么不能使用该控件名称。例如,如果已有名为 Last_Name 的控件,就不能使用名为 Last Name 或 Last+Name 的控件。

与类型库同名的模块

与类型库同名的模块是不能保存的。如果试图使用 ADO、Access、DAO 或 VBA 等名称保存模块,将得到错误消息,该消息表明这个名称与已有模块、工程或对象库的名称冲突。类似地,如果已经设置了对另一类型库(如 Microsoft Excel 类型库)的引用,就不能使用 Excel 作为名称来保存模块。

与方法同名的字段

如果表中的字段名与 ADO Recordset对象上的 ActiveX 数据对象 (ADO)方法或 Recordset对象上的数据访问对象(DAO)方法的名称相同,则不能用 .(点)语法引用记录集内的相应字段。而必须使用 !(惊叹号)语法,否则 Microsoft Access 将产生错误。下面的示例显示如何引用在 Contacts 表上打开的记录集内的 AddNew 字段:

ADO


Dim rst As New ADODB.Recordset
rst.Open "Contacts",CurrentProject.Connection, _
    adOpenKeySet,adLockOptimistic
Debug.Print rst!AddNew

DAO


Dim dbs As Database, rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Contacts")
Debug.Print rst!AddNew

与 Visual Basic函数同名的模块

如果使用与 Visual Basic 固有函数相同的名称保存模块,那么试图执行该函数时,Microsoft Access 将产生错误。例如,以 MsgBox 作为名称保存模块后,当试图运行一个调用 MsgBox函数的过程时,Microsoft Access 将显示“调用的是变量或程序,而不是模块”的错误消息。

与对象同名的模块

如果旧版本 Microsoft Access 创建的数据库中包含一个模块,该模块与 Microsoft Access对象、ADO对象或 DAO对象具有相同的名称,那么在转换数据库时,可能会遇到编译错误。例如,名为 Form 或 Database 的模块将引起编译错误。要避免这些错误,必须重新命名模块。

命名表达式中使用的字段或与窗体和报表上的控件绑定的字段

当在表中创建一个字段,而该字段将绑定到报表上的控件,或用在控件或报表的ControlSource属性的表达式中时,要避免字段的名称与Application对象的方法相同。若要查看 Application对象的方法列表,请在模块“设计”视图中,单击“视图”菜单上的“对象浏览器”,单击“工程/库”框中的 Access,然后单击“类”框中的 Application,在“成员”框中查看 Application对象的方法。

当在表中创建一个字段,而该字段将绑定到窗体或报表上的控件时,不要将字段名称指定为下列名称:AddRef、GetIDsOfNames、GetTypeInfo、GetTypeInfoCount、Invoke、QueryInterface、Release。

与 Visual Basic 关键字同名的标识符

Microsoft Access 97(或更高版本)使用的 Visual Basic 版本中包含一些新的 Visual Basic 关键字,不能使用这些关键字作为标识符。这些关键字是 AddressOf、Assert、Decimal、DefDec、Enum、Event、Friend、Implements、RaiseEvent 和 WithEvents。当转换用 Microsoft Access 旧版本开发的数据库时,与新的 Visual Basic 关键字同名的标识符将引起编译错误。若要更正这些错误,必须重新命名标识符。

使用与 Microsoft Access对象同名的项目

项目名称是一个字符串,代表 Microsoft Access 应用程序的名称。在旧版本的 Microsoft Access 中,项目名称就是数据库的名称。自 Microsoft Access 2000 开始,项目名称由 ProjectName属性设置指定,该属性的默认设置即为数据库的名称。如果要转换的数据库与某一类对象具有相同的名称,例如 application、form 或 report,Microsoft Access 将在数据库名称后面追加一个下划线字符,来创建不与已有对象冲突的项目名称。

上页:Access VBA教程:报表节 下页:Access VBA教程:设置对其他 Microsoft Access 数据库或项目中的 Visual Basic 工程的引用

Access VBA教程:范围和对象命名的兼容性

Access VBA教程:设置对其他 Microsoft Access 数据库或项目中的 Visual Basic 工程的引用 Access VBA教程:设置对类型库的引用
Access VBA教程:Snapshot Viewer 控件 Access VBA教程:“排序与分组”框
Access VBA教程:字符串函数运算的差异 Access VBA教程:表
Access VBA教程:表字段 Access VBA教程:在 Microsoft Access 2002 中使用枚举常量
Access VBA教程:Microsoft Access 常量概述 Access VBA教程:操作查询
Access VBA教程:ActiveX 控件(窗体) Access VBA教程:了解 ActiveX 控件(数据访问页)
Access VBA教程:绑定控件 Access VBA教程:绑定范围控件
Access VBA教程:绑定超链接控件 Access VBA教程:绑定对象框控件
Access VBA教程:图表控件(窗体和报表) Access VBA教程:复选框控件(窗体和报表)
Access VBA教程:复选框控件(数据访问页) Access VBA教程:组合框控件(窗体)
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号