【问题标题】:How to insert the result of SQL query in worksheet cells如何在工作表单元格中插入 SQL 查询的结果
【发布时间】:2019-04-30 04:17:04
【问题描述】:

我想直接在我使用 ADO Excel VBA 的特定单元格中写入我的 sql 查询结果。

        SetConn     ' SET THE CONNECTION TO THE DATABASE.

        sQuery = "SELECT * FROM [referenceStandard$] WHERE [Line] = 'L1' AND [Variants] = 'Choco Wafer (L1)' AND [ID] = 'CW (L1)' "

        If rs.State = adStateOpen Then
            rs.Close
        End If

        rs.CursorLocation = adUseClient

        rs.Open sQuery, myConn, adOpenKeyset, adLockOptimistic
        If rs.RecordCount > 0 Then
            MsgBox "Result is > 1"
            Do While Not rs.EOF

            'Codes that will copy the result of query and paste in worksheet cells

            Loop
        End If

【问题讨论】:

  • 根据那里的行数,您可能需要先加载一个对象数组,然后一次将整个范围写入您的工作表。 Check an answer here 查看在 VB.net 中将对象数组写入 Excel 的示例。希望它能给你一些想法。
  • 你好@MichaelZ。我希望查询的结果插入一个数组并摆脱空白/空结果。有可能吗?
  • 如果您遍历每一行以创建对象数组,那么您可以完全控制它,并且可以根据需要跳过行并更改单元格值。它很快,因为它都在内存中。
  • 其实你应该在 SQL 中处理所有这些

标签: excel vba


【解决方案1】:

你可以使用CopyFromRecordset:

rs.Open sQuery, myConn, adOpenKeyset, adLockOptimistic
If Not rs.EOF Then
    ActiveSheet.Range("a1").CopyFromRecordset rs
End If

如果您想要比这更具体/更有选择性的东西,那么用更多细节更新您的问题可能会很有用。

【讨论】:

  • 您好!非常感谢你! :) 但是我忘了在我的帖子中添加一个问题,即查询的结果将进入一个数组并摆脱空/空白结果。
  • 看来您需要添加更多细节。 究竟你想做什么?
  • 我有用作类别的列。并为其特定值的行。例如:列 ID、产品、数量、颜色、重量。行的具体值为1,Wafer,200,(空值),2kg。我想要 1,Wafer,200,2kg 的结果。 *运行查询后,空值会自动删除。
  • 添加到您的 SQL 查询“...并且颜色不为空”这将删除未指定颜色的记录。
  • 但我仍然需要行的整个值。所以我打算先将结果插入数组。然后,如果数组具有空白/空值,我可以过滤结果。在我的查询中添加 IsNotNull 函数只过滤了我的查询结果,而不是我需要的特定行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 2014-05-26
  • 2017-10-23
  • 2013-12-25
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多