在几天前,我有这个非常简单的脚本运行得很好;
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase "\\mynetwork\myconnection\mydatabase.accdb"
appAccess.DoCmd.OpenQuery "Update", acViewNormal, acEdit
Set appAccess = Nothing
不幸的是,现在,突然间,我抛出了一条错误信息:
我已尝试使用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
感谢任何见解。
答案 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"