我正在尝试从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连接有哪些替代方案?
答案 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
枚举值的整数值,使用对象浏览器来发现枚举值。在此处发布结果可以为您的问题提供进一步的线索。