如何在Excel外部数据请求中使用参数?

时间:2009-03-04 22:01:31

标签: sql excel excel-2007

我已经可以使用Excel(2007)从SQL Server 2005导入数据。我添加了一个数据连接,然后输入一个自定义SQL查询来检索我想要的数据。凉。

但我想补充的是能够根据电子表格中已知单元格中的值来参数化该查询。

我的查询将来自

SELECT * FROM dbo.MyDataTable WHERE Col1 = 'apples'

类似

SELECT * FROM dbo.MyDataTable WHERE Col1 = 'Cell("B2")'

这可能吗?如果是这样,怎么样?

4 个答案:

答案 0 :(得分:3)

如果您using MS Query将数据导入Excel,this page会显示如何使用工作表中单元格中的值作为查询中的参数。

答案 1 :(得分:1)

尝试按如下方式构建代码:

Dim strSQL as String
Dim strFruit As String

strFruit = CStr(ThisWorkbook.Sheets("Sheet1").Range("A1").FormulaR1C1)

strSQL = "SELECT * FROM dbo.MyDataTable WHERE Col1 = '" & strFruit & "'"

我发现在将参数合并到SQL查询之前,首先将参数加载到变量中是有用的。

它使您的SQL字符串更具可读性,并允许您在使用之前检查/清除该参数。

答案 2 :(得分:1)

我没有使用Excel 2007,但在以前版本的Excel中我真的很讨厌SQL Query集成。特别是我发现很难完全按照你的要求去做,而不需要一起攻击一堆VBA代码。我做了一些研究,最后决定使用Rob Van Gelder的Excel查询添加:

http://vangelder.orconhosting.net.nz/excel/queryeditor.html

GUI中的“参数”部分允许您设置参数并让实用程序提示用户输入值或从单元格引用中提取值。我相信后者正是你想要做的。它还具有在单元格值更改时自动刷新的功能。在验证数据库中的数据时,我经常使用自动刷新功能。

我遇到过几种情况,我的查询已损坏,我无法再打开它们或看到文本。因此,我建议在excel电子表格中为查询保留一个选项卡,并将查询文本复制到该特殊页面上的单元格中。这样,如果查询工具吃掉了您的查询,您就不必从头开始重建它们。

第三方工具虽然是免费的,但可能不是您想要的,但对我来说效果很好。祝好运!

答案 3 :(得分:0)

Dim SQLString as String

SQLString = "SELECT * FROM dbo.MyDataTable WHERE Col1 = '" & Cells("B2") & "'"

值得看SQL Injection attacks看看这种方法的缺点,但它可能不一定是你需要做的事情的考虑因素