导入到Excel期间,ADO记录集在“memo”数据类型上失败

时间:2011-10-04 23:57:42

标签: sql excel ado recordset

我正在尝试从SQL服务器检索数据,以便在某些Excel 2003宏中使用。我想避免使用QueryTables,因为我不希望从实际工作表中编写和读取这个中间步骤。这似乎很耗时且没有意义。

我已设法获取记录集,但它包含服务器上数据类型为“memo”的空数据。

此外,程序在尝试将数据存储到Range中时崩溃。它似乎是第一个“空”字段,然后它给了我一个1004错误代码。

显然,备忘录领域让我感到悲痛。任何人都可以提出如何解决这个问题的建议,或者我应该采取哪些不同的做法?

    objMyConn.connectionString = "ODBC;" _
    & "Provider=SQLOLEDB;DRIVER={SQL Server};SERVER=VANDB;" _
    & "APP=Microsoft Office 2003;DATABASE=WPDB_BE;Trusted_Connection=Yes;"
    objMyConn.Open

我已经在网上搜索了很多年,但是这个Access / ADO / Excel的东西非常痛苦。请帮忙。

编辑1:我后来用“TOP 1”(SQL版“LIMIT 1”)修改了SQL查询,发现使用该记录集,正确返回了备注字段 。同样,我可以选择一个有问题的字段,并获得更多行,例如“SELECT TOP 52 bad_field FROM ...”

所以我怀疑问题是某种ADO连接数据大小限制?似乎Access“memo”类型就像一个“MEDIUMTEXT”MySQL类型,那么我如何绕过这样的限制呢?那么这是一个单独的问题,但ADO连接有哪些替代方案?

1 个答案:

答案 0 :(得分:0)

您可以使用ADO Connection对象(objMyConn)来发现数据类型(以及其他属性),因为ADO会解释它:

With objMyConn.OpenSchema(adSchemaColumns, Array(Empty, Empty, "your_table_name_here"))
  .Filter = "COLUMN_NAME = 'your_column_name_here'"
  MsgBox .Fields("DATA_TYPE").Value
End With

这将返回其各自的SchemaEnum枚举值的整数值,使用对象浏览器来发现枚举值。在此处发布结果可以为您的问题提供进一步的线索。