【问题标题】:VBA adodb recordset fieldname contain hash sign instead of dotVBA adodb 记录集字段名包含井号而不是点
【发布时间】:2018-07-30 17:56:09
【问题描述】:

我编写了将 CSV 文件导入内部自定义数据集以供将来在其他功能中使用的 excel 宏。我正在使用 Schema.ini 文件为 CSV 文件中的每一列配置字段类型。我遇到了一个在网上找不到解决方案的问题。 CSV 文件被正确读取,但在原始 CSV 列标题中包含一个点号“。”记录集将其读取为井号“#”。为了让宏对我正常工作,我应该注意哪些设置?

Dim sqlConnection As ADODB.Connection
Set sqlConnection = CreateObject("ADODB.Connection")
Dim sqlRecordset As ADODB.Recordset
Set sqlRecordset = CreateObject("ADODB.Recordset")

sqlConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & sCSVFolderPath & ";" & _
      "Extended Properties=""text;HDR=YES;FMT=Delimited(,)"""

sqlRecordset.Open "SELECT * FROM " & "[" & sCSVFileName & "]", _
          sqlConnection, sqlOpenStatic, sqlLockOptimistic, adCmdText

再一次 - 任何时候列标题包含点号(即“Header.1”),它都使用井号(“Header#1”)读取。

【问题讨论】:

  • 尝试在SELECT 中显式引用列而不是星号*,并使用反引号或方括号转义所有列名。
  • 感谢您的回答。我可以请你更具体吗?你能写一个例子吗?我的 VBA 技能仍处于学习阶段:)。
  • 这就是我简单调整 SQL 调用的意思:sqlRecordset.Open "SELECT [Header.1], [Header.2], [Header.3] FROM " & "[" & sCSVFileName & "]"

标签: vba adodb recordset


【解决方案1】:

在我看来,好像 adodb 用哈希字符替换分隔符(如点)。如果您确定您的字段名称不包含哈希,您可以将它们改回点,但我不会称之为解决方案....

不知道其他字符是否也被adobd替换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多