OpenQuery操作已取消。错误代码800A09C5

时间:2017-06-07 17:55:23

标签: ms-access vbscript

在几天前,我有这个非常简单的脚本运行得很好;

Set appAccess = CreateObject("Access.Application")

appAccess.OpenCurrentDatabase "\\mynetwork\myconnection\mydatabase.accdb"

appAccess.DoCmd.OpenQuery "Update", acViewNormal, acEdit
Set appAccess = Nothing

不幸的是,现在,突然间,我抛出了一条错误信息:

enter image description here

我已尝试使用Google搜索某些解决方案,但似乎错误代码800A09C5并不常见。

有趣的是,其他代码工作得很好,所以我真的很困惑为什么我会遇到上述错误。

SET oAcc = CREATEOBJECT("Access.Application")

oAcc.OpenCurrentDatabase "\\mynetwork\myconnection\mydatabase.accdb"

oAcc.DoCmd.OutputTo acOutputTable, "PR_NOTES", "Excel97-Excel2003Workbook
(*.xls)", "\\mynetwork\OutputFiles\File_" & replace(FormatDateTime
(now,2),"/","-") & "at" & replace(FormatDateTime(now,4),":","-") &".xls", False, "",
, acExportQualityPrint

感谢任何见解。

1 个答案:

答案 0 :(得分:0)

此代码行:

appAccess.DoCmd.OpenQuery "Update", acViewNormal, acEdit

因多种原因无效。首先,acViewNomral的代码常量和acEdit的代码常量不是vbScript的一部分,而是来自Access的常量。 Vb脚本不知道这些常量的值是什么。因此,您必须使用Access中的实际值替换常量。 (因此在访问的调试窗口中,您可以按

中的类型打印常量
? acViewNormal

? acEdit

现在快速测试显示上面的常量为“0”,所以你要用0替换常量(没有引号)。

接下来您的命令失败,因为您在EDIT模式下打开查询 - 该模式是编辑和修改查询 - 而不是运行查询。

接下来,更大的问题是当您使用docmd时。要执行查询,您将收到“对话框”,例如您是否要更新所有这些行是/否 - 由于脚本和自动化,您将无法单击确定并对这些提示回答“是”。您可以更改setwarnings,但最容易使用execute方法。

所以在

的语法中

appAccess.DoCmd.OpenQuery"更新"

应该可以工作 - 但是那些令人讨厌的提示,例如"您将要更新xxx行等将会出现 - 而且您无法在脚本中回答这些提示。

最好使用execute方法,因此使用

appAccess.currentdb.Execute "Update"