如何将参数添加到不能以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的详细步骤:

  1. 打开Excel
  2. 转到数据选项卡
  3. 从“ 其他来源”button中select“ 从Microsoft Query”
  4. “select数据源”窗口将出现。 select一个数据源 ,然后单击确定
  5. 查询Qizard
  1. select列:窗口将出现。 目标是创build一个通用的查询。 我build议从一个小表中select一列。
  2. 过滤数据:只需点击下一步
  3. sorting顺序:只需点击下一步
  4. 完成:只需单击完成
  • “导入数据”窗口将出现:
    1. 点击属性…button。
    1. select定义选项卡
    2. 在“命令文本:”部分添加一个包含Excel参数的WHERE子句 。 现在添加所有你想要的参数是非常重要的。 例如,如果我想要两个参数,我可以添加这个:
      哪里1 =? 和2 =?
    3. 点击确定返回到“导入数据”窗口
  • select数据透视表
  • 点击OK
  • 系统将提示您input每个参数的参数值。
  • 一旦你input参数,你将在你的数据透视表
  • 转到“ 数据”选项卡并单击“连接属性”button
    1. 点击定义选项卡
    2. 在“命令文本:”部分中,使用与之前定义的相同数量的参数粘贴所需的实际SQL查询
    3. 点击参数…button
    1. input每个参数的提示值
    2. 点击OK
  • 单击确定closures属性窗口
  • 恭喜,你现在有参数。
  • 简单的解决方法(不需要VBA)

    1. 右键单击表格,展开“表格”上下文菜单,select“外部数据属性”
    2. 单击button“连接属性”(仅在工具提示中标记)
    3. 转到标签“定义”

    从这里直接编辑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将监视参数。