我在使用 VBA 执行 SQL 查询并将结果复制到 Excel 工作表中时遇到问题。
当 sub 执行时,它仅复制 256 倍数的行(因此第 256、512、768 等行是唯一填充到 Excel 中的行)。我从数据库复制任何其他字段都没有问题。另外,当我在 MySQL 中运行相同的查询时,它工作得很好。作为 SQL 和 VBA 的新手,我看不出这个特定字段会引起麻烦的任何原因。我唯一能想到的是它的内容是一个始终以下划线开头的字符串(我只提到这一点,因为这是它与其他一些字段之间的唯一区别)。
有谁知道为什么会发生这种情况?
Cheers,
Liam
编辑:
这是有问题的代码片段。老实说,我不确定看到代码是否会有所作为,因为它在其他情况下工作得很好,但话又说回来,这就是为什么我是新手:)
Dim con As ADODB.Connection
Dim rst As ADODB.Recordset
Set con = New ADODB.Connection
Set rst = New ADODB.Recordset
con.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=ipaddress;UID=userID;PWD=password;DATABASE=jiradb;OPTION=16427;"
con.Open
sql = "SELECT TEMPO_DATA FROM gssd_worklog WHERE WORK_DATE BETWEEN '2012-01-01' AND '2012-03-31'"
'Open Recordset'
rst.Open sql, con
'Copy Data to Excel'
Set ws = ActiveSheet
ws.Range("A2").CopyFromRecordset rst
我昨天遇到了一个非常类似的问题,在研究时发现了这个线程,所以想添加我的“解决方案”,以防它对其他人有帮助。
为了完善问题描述,我发现它适用于我的数据集中的一个特定字段,有趣的是,如果我重新排序查询,它适用于每个后续字段。添加尾随或删除较早的字段对我的问题列没有影响。
检查类型发现它与其他一些有效的字段类型相同,因此也没有任何线索。
然而,由于它是一个特定字段(在本例中是文本字段),我决定尝试更改 SQL 查询以 CAST 问题字段,更改:
SELECT Col1, Col2, Col3 FROM TableName
...to...
SELECT Col1, Col2, CAST(Col3 AS VARCHAR(8)) AS Col3 FROM TableName
...突然所有数据都出现了(包括任何尾随列)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)