我们的大部分用户群通过使用 Microsoft Query 在 Excel 2003 中构建 ODBC 查询来访问公司数据。对于更复杂的事情,他们经常让我参与其中。
在很多情况下,我决定提取某些数据的最合乎逻辑的方法是使用内联表值函数来实现参数化视图的功能。从查询分析器调用时,这工作正常:
SELECT * FROM fn_AverageRecovery('2009-07','2009-10')
Sequence Process Centre Process Centres_Description Input Qty Output Qty Recovery
----------- -------------------------------------------------- -------------------------------------------------- ----------------------------------------------------- ----------------------------------------------------- -----------------------------------------------------
10 GM Green Mill 12345.678 11223.344 11
11 LYR Log Yard Report 98765.432 55443.322 99
20 MB MultiBand Resaw 5555.666 5555.444 50
但是在 MS Query 中输入相同的 SELECT 子句会导致错误:无法添加表 'fn_AverageRecovery('2009-07''。
不仅如此,我真正想做的是从电子表格中获取 Period 参数,但是如果我用问号替换文字 MS Query 会给我一个可怕的错误:在不能的查询中不允许使用参数以图形方式显示。
现在,我过去有时通过使用输入一些简单 SQL 语句的相当不雅的方法,单击 Excel 中结果集中的任何单元格,然后切换到 VBA 并在即时窗口中手动设置 CommandText 属性来设法避免这种情况:
ActiveCell.QueryTable.CommandText="select * from fn_AverageRecovery(?,?)"
没有来自 VBA 的投诉。但是当我切换回 Excel 并右键单击单元格并选择刷新数据时,我收到两个错误:
[Microsoft][ODBC SQL Server Driver]参数号无效
[Microsoft][ODBC SQL Server Driver]无效的描述符索引
每次我遇到这个问题时,我都会花一个小时左右的时间试图让它工作,但总是不得不求助于另一种方式来解决它。我很想知道是否有人征服了这个。
谢谢
韦恩象牙