【问题标题】:VBA: sql, retrieving the multiple valuesVBA:sql,检索多个值
【发布时间】:2021-02-27 19:17:48
【问题描述】:

我的第一个 excel 表我有一个关键值,例如:

我想从数据库中检索值(一个键在数据库中具有多个值,例如)并将其放在第二张表上:

我不知道如何创建一个 sql 联合,因为我只检索第一个值。我的代码是:

imgur.com/j9Ay5.png

【问题讨论】:

    标签: sql excel vba adodb


    【解决方案1】:

    我建议您首先使用数据构建 SQL 查询,然后然后针对记录集运行它/一次尝试写出。它应该比一次做这些记录要快得多。

    A) 将范围内的数据连接成一个字符串,用单引号括起来,值之间用逗号分隔 (https://trumpexcel.com/concatenate-excel-ranges/)

    B) 将您的 SQL 查询更改为

    "select  isin.CD_RGA, val.D_COTATION from DB_VALEUR_RGA val, DB_RGA isin " &_
    "where isin.CD_RGA IN (" & YOUR_CONCAT_STRING_HERE & ")" & _
    " and isin.IS_RGA=val.IS_RGA and (val.D_COTATION in ('28/08/2020') or val.D_COTATION > '13/10/2020') and val.D_COTATION not in ('17/10/2020')"
    

    C) 打开后,立即转储范围内的值;不要一次只做一个细胞。有关其他示例,请参阅此little tip

    With Worksheets("OUTPUT")
        .Cells.ClearContents
        .Cells(1, 1).CopyFromRecordset RECSET
    End With
    
    

    【讨论】:

    • 您好,谢谢,好主意!我不知道如何输入结果,我将错误添加到带有问题的消息中
    • 您可以看到您的变量周围没有单引号。您需要用引号将值括起来才能使 SQL 正常工作。请查看我的链接以了解如何做到这一点。您希望 Code_Isin 的值看起来像“FR001”、“FR002”、“FR003”、“FR004”
    • 是的,我这样做了(我放了新图像),只是没有出现在控制窗口中
    • 我想问题在输出定义中,但我不知道如何纠正它: Worksheets("OUTPUT").Cells(1, 1).Value = Code_Isin Worksheets("OUTPUT" ).Cells(1, 2).Value = RECSET.Fields("D_COTATION").Value
    • 我更清楚地说明了如何保存数据。如果您需要其他帮助,请在线研究 RECORDSET,因为这是基本的 vb 行为。如果您有错误,请包含错误消息(我在您的帖子中没有看到)。如果有帮助,请点赞或接受答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多