SQL 查询不会仅返回一个字段的完整结果

2024-01-25

我在使用 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(使用前将#替换为@)

SQL 查询不会仅返回一个字段的完整结果 的相关文章

随机推荐