2017-06-07 37 views
0

直到幾天前,我有這個非常簡單的腳本運行得很好;OpenQuery操作被取消。錯誤代碼800A09C5

Set appAccess = CreateObject("Access.Application") 

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

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

不幸的是,現在,突然之間,我拋出一個錯誤信息:

enter image description here

我試着用搜索引擎的一些解決方案,但它似乎是錯誤代碼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」 vbScrit因爲常數ing不知道這些值是什麼。 acViewNormal應該是一個沒有引號的0,而acView是1 –

+0

嗨艾伯特,你能舉個例子嗎?我不確定我是否關注你。 – Pucho

+0

當你進入CreateObject時,VBS腳本並不會通過魔法突然創建並允許使用所有的Access常量,比如acExportQualityPrint。 VBS不知道這些常量的價值。結果你使用的所有3是0,所以你有什麼可以工作。點擊ctrl-g,然後輸入? acExportQualityPrint查看您必須在代碼中使用的實際值。您必須使用替換acExportQualityPrint。因此,Outlook或Word或Access的自動化不會讓您使用已經在Access中定義的數百個常量。相信是0,但acExportQualityPrint例如也是零。 –

回答

0

此代碼的行:

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

不會有以下幾個原因工作。首先,acViewNomral的代碼常量和acEdit的代碼常量不是vbScript的一部分,但是來自Access的常量。 Vb腳本不知道這些常量的值是什麼。所以你必須用來自Access的實際值來替換常量。 (所以在進入調試窗口打印出按類型的常量

? acViewNormal 

而且

? acEdit 

現在一個快速測試顯示上述參數爲「0」,所以你會更換常數用0(不含引號)

接下來你的命令失敗,因爲在編輯模式下打開查詢 - 這模式是編輯和修改查詢 - 而不是運行查詢

下一頁ü p和更大的問題是當你使用docmd時。要執行查詢,您將收到「對話框」框,例如是否想要更新所有這些行是/否 - 由於腳本和自動化,您將無法單擊「確定」並對這些提示回答「是」。您可以更改setwarnings,但最容易使用execute方法。

所以在

appAccess.DoCmd.OpenQuery「更新」

應該工作的語法 - 但後來那些討厭的提示,比如「你是即將更新XXX行等都會出現 - 你在腳本不能回答這些提示。

最好使用執行方法,因此使用

appAccess.currentdb.Execute "Update" 
相關問題