如何将参数添加到不能以graphics方式显示的Excel中的外部数据查询?
我经常使用MS Excel的“ Get External Data
来创build简单的报告 – 针对数据库运行查询并在Excel中很好地显示。 Excel的优秀function,如过滤和数据透视表,以及用户熟悉的界面使其非常适合。 但是,Microsoft Query的一个限制是不能将参数添加到无法以graphics方式显示的查询中,这大大限制了您可以编写的SQL。
是否有任何解决scheme的错误“参数不允许在查询中无法以graphics方式显示”?
Excel的SQL Server查询界面不会让你有一个自定义的参数。 解决这个问题的方法是创build一个通用的Microsoft Query,然后添加参数,然后将您的参数化查询粘贴到连接的属性中。 以下是Excel 2010的详细步骤:
- 打开Excel
- 转到数据选项卡
- 从“ 其他来源”button中select“ 从Microsoft Query”
- “select数据源”窗口将出现。 select一个数据源 ,然后单击确定 。
- 查询Qizard
- select列:窗口将出现。 目标是创build一个通用的查询。 我build议从一个小表中select一列。
- 过滤数据:只需点击下一步
- sorting顺序:只需点击下一步
- 完成:只需单击完成 。
- 点击属性…button。
- select定义选项卡
- 在“命令文本:”部分添加一个包含Excel参数的WHERE子句 。 现在添加所有你想要的参数是非常重要的。 例如,如果我想要两个参数,我可以添加这个:
哪里1 =? 和2 =? - 点击确定返回到“导入数据”窗口
- 点击定义选项卡
- 在“命令文本:”部分中,使用与之前定义的相同数量的参数粘贴所需的实际SQL查询 。
- 点击参数…button
- input每个参数的提示值
- 点击OK
简单的解决方法(不需要VBA)
- 右键单击表格,展开“表格”上下文菜单,select“外部数据属性”
- 单击button“连接属性”(仅在工具提示中标记)
- 转到标签“定义”
从这里直接编辑SQL,join'?' 无论你想要一个参数。 和以前一样工作,除非你不唠叨。
如果您有Excel 2007,则可以编写VBA以更改工作簿中的连接(即外部数据查询)并更新CommandText属性。 如果你只是添加?
在你想要一个参数的地方,下次刷新数据时,它会提示input连接的值! 魔法。 当您查看连接的属性时,参数button现在将被激活并可以正常使用。
例如,我会编写一个macros,在debugging器中逐步执行,并使其适当地设置CommandText。 一旦你完成了这一步,你可以删除macros – 这只是一个手段来更新查询。
Sub UpdateQuery Dim cn As WorkbookConnection Dim odbcCn As ODBCConnection, oledbCn As OLEDBConnection For Each cn In ThisWorkbook.Connections If cn.Type = xlConnectionTypeODBC Then Set odbcCn = cn.ODBCConnection ' If you do have multiple connections you would want to modify ' the line below each time you run through the loop. odbcCn.CommandText = "select blah from someTable where blah like ?" ElseIf cn.Type = xlConnectionTypeOLEDB Then Set oledbCn = cn.OLEDBConnection oledbCn.CommandText = "select blah from someTable where blah like ?" End If Next End Sub
是的 – 解决scheme是将工作簿保存到XML文件(例如'XML Spreadsheet 2003'),并将其编辑为记事本文本。 使用记事本的“search”function查找查询文本,并将您的数据更改为“?”。
保存并在Excel中打开,尝试刷新数据和Excel将监视参数。