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

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

但是,我想添加的是,根据电子表格中已知单元格中的值来对该查询进行参数化的function。

我的查询将从

  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查询之前,首先将参数加载到variables中非常有用。

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

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

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

他的GUI中的“参数”部分允许您设置一个参数,并让实用程序提示用户input值或从单元格引用中提取值。 我相信后者正是你想要做的。 它还能够在单元格值更改时自动刷新。 在我的数据库中validation数据时,我使用了自动刷新function。

我有几个情况,我的查询变得腐败,我不能再打开或看到文本。 因此,我build议在excel电子表格中为查询保留一个选项卡,并将查询文本复制到该特殊页面上的单元格中。 这样,如果查询工具消耗你的查询,你将不必从头开始重build它们。

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

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

看一下SQL注入攻击是否值得看看这种方法的缺点是值得的,但它可能不一定是你需要做的事情的考虑