2017-08-04 81 views
0

幾周來一直對此問題進行故障排除,至今未解決問題。我已經嘗試了許多解決方案,包括:Excel 2013 - 1004運行時錯誤刷新查詢表

  • 顯式的選項
  • 去除BackgroundQuery =假
  • AutoFilterMode =假

什麼在我的情況感到奇怪的是,在兩臺計算機上運行相同版本的Excel和使用相同版本的ODBC驅動程序,在計算機1上,所有查詢工作,並在計算機2上,它會提供運行時錯誤。問題是,計算機1很快就會消失,所以我需要讓計算機2工作。

另一件非常奇怪的事情是,計算機2在同一子程序中成功地連接和檢索信息!因此,查詢1有效,但查詢2給出運行時錯誤。

在同一個Excel文件上運行計算機2,這裏是查詢1:

SELECT COUNT(ADM_APP_INFO.APP_NUM) 
FROM 
SCHEMA.TABLE TABLE 
WHERE (TABLE.QUEUE = 'QNAME' AND TABLE.PARAM = 'D' 
AND TABLE.DATE_ENT >= '1/1/2016') 

其中工程和拉動信息。查詢2,具有非零數爲:

SELECT DISTINCT COUNT(ACCT_NUM) FROM SCHEMA.DAILY_RUN WHERE DAILY_RUN.ACCT_NUM_FLAG = 0 FETCH FIRST 10 ROWS ONLY 

然而,它確實計算機2時查詢2時具有工作沒有WHERE子句。這兩個查詢都在計算機1上工作,但帶有WHERE子句的查詢2給出了計算機2上的錯誤。

我甚至將計算機1上的工作Excel文件複製到計算機2,並僅在計算機2上獲取錯誤。有沒有任何建議?

僅供參考,這裏是隨着塊我使用:

With Worksheets("Template").QueryTables.Add(Connection:="ODBC;DSN=Connect32;UID=UserName;;HOST=111.111.11.111;PORT=xxxx;SUBSYS=xxxx;DBTY=DB2;PLAN=xxxx ", _ 
    Destination:=Range("D5")) 
    .CommandText = Range("Query!A1:A1").Value 
    '.Name = "Query from MS Access Database" 
    .FieldNames = False 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlOverwriteCells 
    .SavePassword = True 
    .SaveData = True 
    .AdjustColumnWidth = False 
    .RefreshPeriod = 0 
    .PreserveColumnInfo = True 
    .Refresh BackgroundQuery:=False 
End With 
+0

那麼從計算機#2複製失敗的Excel文件到計算機#1並在那裏運行呢? – jsotola

+0

發現這個https://stackoverflow.com/questions/17980854/vba-runtime-error-1004-application-defined-or-object-defined-error-when-select#17982430 – jsotola

+0

嗨jsotola,是的,我也試過,以及並且它在計算機1上再次運行,但在計算機2上失敗 - 謝謝但您提供的鏈接執行了複製粘貼,但似乎沒有解決此問題... –

回答

0

OK,所以它看起來像我存在我的一個同事是能夠解決這個生日。

發現我的ODBC驅動程序,因爲你可能有些懷疑,在兩個系統上沒有配置完全相同的方式。在我的情況下,我需要在高級選項卡下的AlternateID設置下添加數據庫名稱。

即使完全限定查詢中的表名稱也沒有幫助。希望這可以幫助其他人面對這個看似奇怪的問題!