3

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

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

我的查询将从

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

类似于

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

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

4

4 回答 4

3

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

于 2009-03-11T14:45:57.803 回答
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 字符串更具可读性,并允许您在使用之前检查/清理参数。

于 2009-03-05T11:49:42.350 回答
1

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

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

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

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

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

于 2009-03-05T13:52:33.130 回答
0
Dim SQLString as String

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

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

于 2009-03-04T22:48:55.033 回答