繁体   English   中英

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

[英]How do I use a parameter in an Excel external data request?

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

但我想补充的是,能够根据在电子表格的已知单元格中找到的值对该查询进行参数化。

我的查询将从 go

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

类似于

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

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

如果您使用 MS Query将数据输入 Excel, 此页面显示如何使用工作表上单元格中的值作为查询中的参数。

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

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 字符串更具可读性,并允许您在使用之前检查/清理参数。

我没有使用 Excel 2007,但在以前版本的 Excel 中,我真的很讨厌 SQL 查询集成。 特别是,我发现如果不将一堆 VBA 代码一起破解,很难完全按照您的要求进行操作。 我做了一些研究,最后决定使用 Rob Van Gelder 的 Excel 查询添加:

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

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

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

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

Dim SQLString as String

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

值得一看SQL 注入攻击以了解这种方法的缺点,但这可能不一定是您需要做什么的考虑因素

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM