2

Access 2010 アプリケーションにパススルー クエリがあり、SQL Server バックエンドでストアド プロシージャを呼び出すために使用しています。ストアド プロシージャは、動的にする必要があるパラメーターを受け取ります。問題はこれです:

Execute spMyProc 'userName'期待どおりに動作します。

Execute spMyProc getUserName()「')' での構文エラー」メッセージを生成します。

パススルー クエリで関数をパラメーターとして使用することはできますか?

また、私は複雑な Access アプリケーションを SQL サーバーに移行していることに注意してください。私が間違っていることについての提案は、ありがたく受け取られます。この特定の問題は、フォームのレコード ソースをレコード ソース プロパティの単純な選択ステートメントからサーバー上で実行できるものに変更しようとする試みから生じています。

4

1 に答える 1

4

次のコードを使用できます。

With CurrentDb.QueryDefs("MyPass")
  .SQL = "exec spMyProc '" & getUserName() & "'"
  .Execute
End With

getUserName() はローカル VBA 関数であるため、SQL サーバーに送信される実際の文字列を事前に評価する必要があります。上記のように、接続文字列などを処理する必要がないため、保存されたパススルーを使用すると「便利」です。

于 2015-02-26T06:09:11.490 に答える