【问题标题】:Query a SQL database using VBA使用 VBA 查询 SQL 数据库
【发布时间】:2023-03-25 14:39:01
【问题描述】:

我想创建一个 VBA 程序,它连接到您提供给它的数据库(硬编码)。从这里您将编写一个单元格以获取查询中 WHERE 子句的输入,然后在单独的工作表中输出查询的数据。我不想过滤这些数据,我需要查询它。有人可以帮忙吗?

【问题讨论】:

  • 什么样的数据库? Excel 在Data>>Get External Data 下有工具可以做到这一点,所以试着录制一个宏,看看你是否可以修改它来做你需要的。
  • 第 1 步防范 SQL 注入 - 请参阅here 第 2 步告诉我们您尝试连接的数据库类型

标签: database excel vba where-clause


【解决方案1】:

您可以使用 Microsoft Query 执行此操作。基本步骤是:

1 - 使用 Data>From Other Sources>Microsoft Query 连接到数据库

2 - 通过右键单击结果表并选择表>外部数据属性并单击右上角的小图标来修改结果查询。然后选择定义选项卡:

3 - 右键单击​​表格并选择参数。在该对话框中,您可以设置单元格来保存 Where 子句的参数。

有关更多信息,请参阅此MSDN 页面和此Daily Dose post

【讨论】:

  • 所以道格,我按照你在那儿说的做了,并且成功了。我同时运行了一个宏,因为我想获取 VBA 代码,以便在需要时可以更改它。当我稍后尝试运行宏时,我不断收到错误消息,提示存在运行时错误,下标超出范围。当我单击调试以显示问题所在时,它指向我:With ActiveWorkbook.Connections("Query from ProductId").ODBCConnection.
  • 这意味着您的连接名称不是“来自 ProductId 的查询”。我猜它现在可能是“来自 ProductId2 的查询”。这种编程不是微不足道的,所以你必须弄清楚一堆这样的事情。基于这一点信息,我建议您将其编程为每次都使用相同的连接,这意味着不要添加新的连接。当我这么说时,这听起来很明显,如果没有太大帮助,很抱歉。
猜你喜欢
  • 2016-11-28
  • 1970-01-01
  • 2020-12-01
  • 1970-01-01
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
相关资源
最近更新 更多