2014-11-25 106 views
0

我有一個非常令人沮喪的問題。我有一個插入查詢,如果您從內部訪問(需要大約2分鐘才能完成)運行它,但是當我嘗試通過ADO以編程方式從Excel運行時,執行行操作在幾秒鐘內沒有錯誤,但會執行實際上並沒有將任何數據插入表中。我用VBA ADO插入失敗(無錯誤)

的ADO低於:

With objCommand 
    .ActiveConnection = p_moConn 
    .CommandType = adCmdStoredProc 
    .CommandText = "[" & strQueryName & "]" 
    .Execute 
End With 

我也曾嘗試:

p_moConn.Execute strSQL, adCmdText 

隨着完全相同的結果。 (strQueryName是保存的過程的名稱,strSQL是原始SQL)

順便說一句,在我們進入它之前,我沒有使用DAO,因爲這是一個將從Access遷移到「主」數據庫系統和唯一必要的代碼更改應該是連接字符串...手指交叉...

任何幫助表示讚賞!

感謝

馬特

+0

ExecuteNonQuery也許? – Arvo 2014-11-25 11:34:31

+0

你能告訴我們Dim objCommand和p_moConn嗎?與此同時,我會嘗試從幾年後的代碼中找到一些代碼,以查看未報告的ADO錯誤。並且是您與SQL Server的連接? – 2014-11-25 13:35:41

+0

嘿,所以不知道ExecuteNonQuery是什麼,我以前沒聽說過。這是(目前)連接到Access後端的Excel前端。正如我所說,這將在未來發生變化,因此ADO的用法等,但這是爲了證明概念等等等等;-)這43個查詢中只有5個發生這種情況,43個循環運行,所以所有通過相同的ADO執行代碼,所以我目前的調查路線是試圖找出是什麼使這5個不同的... Dim objCommand As ADODB.Command Private p_moConn As ADODB.Connection THANKS !!! – Shippwreck 2014-11-25 14:02:08

回答

0

乾杯的幫助下,這是一件做與5個查詢。我不能發佈SQL(除了其他任何東西都很長......),但是由於長度和複雜性,Access在內部「擺弄」它。即它添加一些東西到查詢的末尾:

AS [%$##@_Alias]; 

當我修改成:

AS [test]; 

的ADO代碼運行它完美!順便說一句,我認爲自己沒有得到錯誤的原因是因爲我一直在尋找在VBA錯誤的對象,而不是ADO一個,我認爲它在發現:

.ActiveConnection.Errors() 

但是,這是未經測試

再次感謝你們!

馬特

BTW,我發現這得益於韋恩G.鄧恩,當我看了看代碼,看看我是否能發佈我終於發現,訪問已經改變的最後一行之前清理它...所以歡呼聲;-)