【问题标题】:ADODB connection refuses to connect due to missing operator由于缺少操作员,ADODB 连接拒绝连接
【发布时间】:2021-09-07 18:15:30
【问题描述】:

我正在通过 ADODB 连接打开一个 Excel 工作表。该代码一直运行良好,直到今天它拒绝连接到新的 Excel 文件。

我使用的 SQL 字符串是:

SELECT container_key, 
       price_catalogue, 
       portfolio_type, 
       portfolio_subtype, 
       yearly_fee, 
       yearly_fee_factor, 
       yearly_fee_2, 
       value_1, 
       advisory_agreement__advisory, 
       value_1_29, 
       3rd_party_key 
FROM   [temp0$] 

现在,当我在应该打开记录集的线路上时,我从 VBA 收到一条错误消息:

查询表达式“3rd_party_key”中的语法错误(缺少运算符)

我已验证该字段存在并且在电子表格中的名称相同。语法对我来说也是正确的。 spreadhseet 非常大(超过 360 列),错误消息中引用的字段是最后一列。这可能与我遇到的问题有关吗?

谁能指出问题出在哪里?

更新: 我尝试将所有字段名称放在括号中。虽然这不会产生运行时错误,但它也不起作用。最后我尝试减少字段数量并一一进行。以下 3 个字段会导致错误:

   advisory_agreement__advisory, 
   value_1_29, 
   3rd_party_key

如果我删除这些字段,我可以毫无问题地打开记录集。我怀疑这些字段的命名约定会以某种方式导致冲突。

【问题讨论】:

  • 只是猜测,但请尝试将字段名称括在方括号中,如[3rd_party_key]。我认为 Access 不喜欢以数字开头的字段......
  • 很高兴知道...似乎它确实消除了该错误,尽管现在生成了一个新错误“没有为一个或多个必需参数提供值”
  • 不知道新的错误。 advisory_agreement__advisory 字段中是否真的有双下划线?
  • 是的,它确实有一个双下划线。我还通过删除字段名称中的数字进一步测试了问题是数字的假设。它似乎确实有所不同,但我继续收到错误消息:“没有为一个或多个必需参数提供值”。
  • 双重和三重检查字段名称

标签: sql ms-access adodb


【解决方案1】:

我会用方括号逐列尝试,看看是哪一列真正导致了问题。这可能看起来有点乏味,但这样你就会知道问题出在哪里。

【讨论】:

    猜你喜欢
    • 2014-01-06
    • 2014-05-15
    • 2017-08-18
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    相关资源
    最近更新 更多