Excel 2013 - 1004运行时错误刷新查询表

时间:2017-08-04 18:44:31

标签: excel vba excel-vba odbc runtime-error

已经对这个问题进行了几周的故障排除,到目前为止,没有任何解决方案有效。我尝试了很多解决方案,包括:

  • 选项明确
  • 删除BackgroundQuery = False
  • AutoFilterMode = False

在我的情况下,奇怪的是,在计算机1上运行相同版本的Excel并使用相同版本的ODBC驱动程序的两台计算机上,所有查询都工作,而在计算机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没有WHERE子句时,确实在计算机2上工作。这两个查询都在计算机1上工作,但带有WHERE子句的查询2在计算机2上产生错误。

我甚至将计算机1上的工作Excel文件复制到计算机2并仅在计算机2上获取错误。这些点表明没有任何建议?

作为参考,这是我正在使用的With块:

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

1 个答案:

答案 0 :(得分:0)

好的,所以看起来我有一个生日礼物,因为我的一位同事能够解决这个问题。

原来我的ODBC驱动程序,正如你们有些人可能怀疑的那样,在两个系统上都没有完全相同的配置方式。在我的例子中,我需要在高级选项卡下的AlternateID设置下添加数据库名称。

如果没有这一步,即使完全限定查询中的表名也无济于事。希望这有助于其他人面对这个看似奇怪的问题!