【问题标题】:Creating a parameterized query in Excel with SQL using a cell as a parameter使用单元格作为参数在 Excel 中使用 SQL 创建参数化查询
【发布时间】:2013-07-03 06:39:33
【问题描述】:

所以在 MS Excel 中,我从 SQL Server 的数据库中导入了一个表。我想创建一个参数化查询,其中有两个单元格。假设这两个单元格是 G1 和 G2。 G1 接受一个参数/类别,G2 从参数/类别中获取一个值并查询您导入的表(本质上是一个从单元格输入动态的 WHERE 子句)。有人可以告诉我怎么做吗?

【问题讨论】:

    标签: sql database excel where-clause parameterized-query


    【解决方案1】:

    编辑:基于聊天会话,我们发现第一个参数是要搜索的列,第二个参数是要过滤的值。


    你可以通过过滤你导入的表来做你想做的事情。

    使用下面的代码作为您的模板。修改它以引用正确的工作表和范围。

    Sub FilterByParameter()
        Dim wb As Workbook
        Dim dataSheet As Worksheet
        Dim parameterSheet As Worksheet
        Dim rng As Range
        Dim filterColumn As Long
        Dim filterValue As String
    
        Set wb = ThisWorkbook
        ' sheet that contains your table
        Set dataSheet = wb.Sheets("Sheet1")
        ' sheet that contains your parameters
        Set parameterSheet = wb.Sheets("Sheet2")
        ' range that contains your table, hard-coded here
        ' but can easily be set dynamically
        Set rng = dataSheet.Range("A1:F78")
    
        ' get the column you are searching
        filterColumn = parameterSheet.Range("G1").Value
    
        ' get the value you want to filter on
        filterValue = parameterSheet.Range("G2").Value
    
        ' turn off autofilters if set
        dataSheet.AutoFilterMode = False
    
        ' autofilter using your column and filter
        rng.AutoFilter field:=filterColumn, Criteria1:=filterValue
    
        ' now you can do whatever you want to with the rows
        ' that remain after the autofilter was applied
    End Sub
    

    有关如何使用可见行的示例,请参阅 Efficient way to delete entire row if...

    【讨论】:

    • 我从来没有真正使用过VBA,所以我不太了解它的语法。这是我拥有的数据库:examples.oreilly.com/9780735666054-files/… 您必须解压缩并打开 TSQL2012。我在 MS Excel 中提取的表格是 Products。我意识到我需要在 H1 和 H2 单元格中代替。
    • 是要新建SQL语句,还是要过滤导入的表?
    • 过滤我导入的表。
    • 好吧,我就是这么想的。我不需要查看您的数据库。您是否尝试过将我的答案应用于您的工作簿?
    • 我尝试将您的答案应用于我的工作簿,基本上它所做的只是关闭表格所在的单元格(标题列除外)并使它们不可见。所以我不知道它是否真的在过滤或做其他事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2015-11-20
    相关资源
    最近更新 更多