若要在 Microsoft Access 代码中运行宏操作,可使用 DoCmd 对象及其方法。该对象代替 Microsoft Access 1.x 和 2.0 版本中的 DoCmd 语句来执行宏操作。
当转换数据库时,Microsoft Access 通过用 .(点)运算符替换空格,自动将任何在 Access Basic 代码中执行的 DoCmd 语句和操作转换为 DoCmd 对象的方法。
某些宏操作在 Microsoft Access 9.0 中及更高版本中与在 1.x、2.0 或 7.0 版中的工作方式不同,下面详细说明这些差异。
DoMenuItem 操作
在 Microsoft Access 中不再使用 DoMenuItem 操作。RunCommand 操作将用于完成 DoMenuItem 操作所执行的任务。
当启用用旧版本 Microsoft Access 创建的数据库时,DoMenuItem 操作将继续执行以前的功能。
当转换用旧版本 Microsoft Access 创建的数据库时,转换后首次保存时,宏中所有的 DoMenuItem 操作均将替换为 RunCommand 操作。而 Visual Basic 过程中使用的 DoMenuItem 方法则不会更改。
TransferSpreadsheet 操作
Microsoft Access 不能导入 Microsoft Excel 2.0 版的电子表格或 Lotus1-2-3 1.0 版的电子表格。如果转换包含宏的数据库,而该宏使用 Microsoft Access 1.x 或 2.0 版中的 TransferSpreadsheet 操作提供这种功能,则转换数据库过程会将“电子表格类型”参数改为 Microsoft Excel 3.0 版(假如最初指定的是 Microsoft Excel 2.0 版);如果最初指定的是 Lotus1-2-3 1.0 版的格式,则会出现错误。
要解决该问题,应在将电子表格导入到 Microsoft Access 之前,先将电子表格转换为新版本的 Microsoft Excel 或 Lotus 1-2-3。
TransferText 和 TransferSpreadsheet 操作
在 Microsoft Access 中使用 TransferText 操作或 TransferSpreadsheet 操作时,不能使用 SQL 语句来指定要导出的数据。必须先创建查询,然后在“表名”参数中指定查询的名称,而不是使用 SQL 语句。
比较 Null 值
在 Microsoft Access 1.x 和 2.0 版中,如果在宏条件中用比较运算符比较两个表达式,且其中的一个表达式是 Null,那么根据使用的比较运算符,Access Basic 将返回 True 或 False 作为比较的结果。在 Microsoft Access 2000 或更高版本中,Visual Basic 为表达式等于 Null 的比较返回 Null。为确定比较结果是否为 Null,请使用 IsNull 函数检查比较结果。