【问题标题】:Using VBA Code To Customize SQL Query使用 VBA 代码自定义 SQL 查询
【发布时间】:2018-04-05 19:12:40
【问题描述】:

目前我正在处理一个连接到 sql 查询的 Excel 工作簿,作为使用电源查询的数据源 此 sql 查询包含一个日期值 我需要添加一个 vba 代码,使用户能够在 sql 查询中自定义日期值

为了让我自己更清楚,例如sql查询包含这段代码,我当然可以手动更改它,但我需要在工作表中添加一个按钮或其他东西以使用户能够更改数据周期

例如。 声明@DT_FROM NVARCHAR(23);设置@DT_FROM = N'2018-03-29'; 声明@DT_TO NVARCHAR(23); SET @DT_TO = N'2018-03-29';

这可能吗? 谢谢 问候

【问题讨论】:

  • 如果您使用的是 Power Query,请打开 Advanced Editor 并复制整个 M code 并将其粘贴到您的说明中以供参考。您可以将查询转换为Functioninvoke,它接受单元格中的date parameters
  • 或者在这里使用我的答案并设置两个参数变量(?,?)从工作表中拉出stackoverflow.com/questions/49490189/…
  • 谢谢,但这不是我的意思..看我会用另一种方式解释..我可以创建一个按钮或下拉列表或任何可以更改语句的使用输入关于 SQL 查询,使用 VBA?

标签: sql vba excel powerquery


【解决方案1】:

您可以为单元格命名,例如CELLNAME(菜单选项卡公式 -> 名称管理器)。 然后您可以使用以下模式将此类单元格中的值读入 Power Query

Excel.CurrentWorkbook(){[Name="CELLNAME"]}[Content]{0}[Column1]

假设您创建了两个名称“FROM”、“TO”,那么您可以在 Power Query 中构建以下字符串:

="DECLARE @DT_FROM NVARCHAR(23); SET @DT_FROM = N'" & 
    Date.ToText( Date.From( Excel.CurrentWorkbook(){[Name="FROM"]}[Content]{0}[Column1] ), 
                 "yyyy-mm-dd" ) & 
    "'; DECLARE @DT_TO NVARCHAR(23); SET @DT_TO = N'" & 
    Date.ToText( Date.From( Excel.CurrentWorkbook(){[Name="TO"]}[Content]{0}[Column1] ), 
                 "yyyy-mm-dd" ) & "';"

如何更改这些单元格中的值取决于您 - 宏或直接输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多