我经常使用MS Excel的Get External Data
创建简单的报表 - 对数据库运行查询并在Excel中显示良好。 Excel的过滤和数据透视表以及用户熟悉的界面等强大功能使其非常有用。但是,Microsoft Query的一个限制是您无法向无法以图形方式显示的查询添加参数,这极大地限制了您可以编写的SQL。
是否有任何错误解决方案“无法以图形方式显示的查询中不允许使用参数”?
答案 0 :(得分:48)
Excel的SQL Server查询界面不允许您拥有自定义参数。解决此问题的方法是创建通用Microsoft Query,然后添加参数,然后将参数化查询粘贴到连接的属性中。以下是Excel 2010的详细步骤:
答案 1 :(得分:24)
简易解决方法(无需VBA)
从这里开始,通过添加'?'直接编辑SQL无论你想要什么参数。与以前一样工作,除非你没有被唠叨。
答案 2 :(得分:5)
如果您使用的是Excel 2007,则可以编写VBA来更改工作簿中的连接(即外部数据查询)并更新CommandText属性。如果您只是在需要参数的地方添加?
,那么下次刷新数据时,它会提示您输入连接的值!魔法。当您查看“连接”的属性时,“参数”按钮现在将处于活动状态并且可以正常使用。
E.g。我编写了一个宏,在调试器中逐步执行它,并使其适当地设置CommandText。完成此操作后,您可以删除宏 - 它只是更新查询的一种方法。
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
答案 3 :(得分:-1)
是 - 解决方案是将工作簿保存到XML文件(例如'XML Spreadsheet 2003')并在记事本中将此文件编辑为文本! 使用记事本的“搜索”功能查找查询文本并将数据更改为“?”。
在excel中保存并打开,尝试刷新数据,excel将对参数进行监控。