范围和对象命名的兼容性
时 间:2015-11-24 08:26:37
作 者:杨雪 ID:42182 城市:南京
摘 要: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软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)
- Access快速开发平台--让有权...(11.04)
- Access快速开发平台--审批选...(11.01)
- ACCESS两张表先各自排序,然后...(10.31)
- Access对子窗体数据进行批量+...(10.30)
- SqlServer中如何用SQL命...(10.29)
- Access报表中的分组功能用代码...(10.28)
- 用Access计算库存结余的一个方...(10.26)
- 最精简的组合框行来源数据快速输入(...(10.25)