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 字段:
Dim rst As New ADODB.Recordset
rst.Open "Contacts",CurrentProject.Connection, _
adOpenKeySet,adLockOptimistic
Debug.Print rst!AddNew
Dim dbs As Database, rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Contacts")
Debug.Print rst!AddNew
如果使用与 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。
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 2000 开始,项目名称由 ProjectName 属性设置指定,该属性的默认设置即为数据库的名称。如果要转换的数据库与某一类对象具有相同的名称,例如 application、form 或 report,Microsoft Access 将在数据库名称后面追加一个下划线字符,来创建不与已有对象冲突的项目名称。