3

当社のユーザー ベースの大部分は、Microsoft Query を使用して Excel 2003 内で ODBC クエリを作成することにより、企業データにアクセスしています。より複雑なものについては、彼らはしばしば私を巻き込みます。

特定のデータを抽出する最も論理的な方法は、インライン テーブル値関数を使用してパラメーター化されたビューの機能を実現することであると判断する機会が何度もありました。これは、Query Analyzer から呼び出されたときに正常に機能します。

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''.

それだけでなく、本当にやりたいことは、ピリオド パラメーターをスプレッドシートから取得することですが、リテラルを疑問符に置き換えると、MS Query で恐ろしいエラーが表示されます。グラフィカルに表示されます。

さて、私は過去に、いくつかの単純な SQL ステートメントを入力し、Excel 内の結果セット内の任意のセルをクリックし、VBA に切り替えて、イミディエイト ウィンドウで CommandText プロパティを手動で設定するというかなり洗練されていない方法を使用して、この状況を回避することができました。 :

ActiveCell.QueryTable.CommandText="select * from fn_AverageRecovery(?,?)"

VBA からの苦情はありません。しかし、Excel に戻ってセルを右クリックし、[データの更新] を選択すると、次の 2 つのエラーが発生します。

[Microsoft][ODBC SQL Server Driver]無効なパラメーター番号

[Microsoft][ODBC SQL Server Driver]無効な記述子インデックス

これに遭遇するたびに、それを機能させるために1時間ほど費やしましたが、常に別の方法で解決する必要がありました. 誰かがこれを克服したかどうか知りたいです。

ありがとう

ウェイン・アイボリー

4

1 に答える 1

1

これをストアド プロシージャに入れ、Excel シートにストアド プロシージャを実行させることができます。これなら対応できると思います。次に、ストアド プロシージャでテーブル関数に対してクエリを実行するだけです。

于 2009-10-15T07:33:30.603 に答える