私はAccessからストアドプロシージャを実行すると少し問題があります。私はそれでOKですが、そこにある正しい順序でパラメータを指定してAccess VBAでストアドプロシージャを呼び出すのはなぜですか?
Set cmd = init_adodbcommand("sp_002_test_tabellenparameter")
cmd.Parameters("@str_test") = "Test"
cmd.Parameters("@str_test2") = "Test"
cmd.Execute
:私は今、私はこのようなストアドプロシージャを呼び出していますのためにMS SQL Server 2008の
と一緒に、「Microsoft ActiveXデータ2.8オブジェクトライブラリ」を使用しています問題私はあまりにも正常に動作し、このコードを、使用していますので、私は、ストアドプロシージャではnvarchar(max)の変数を使用していた場合:
Set cmd = init_adodbcommand("sp_002_test_tabellenparameter")
cmd.Parameters.Append cmd.CreateParameter("@str_test", adLongVarWChar, adParamInput, -1, "Test")
cmd.Parameters.Append cmd.CreateParameter("@str_test2", adLongVarWChar, adParamInput, -1, "Test")
cmd.Execute
それはあまりにも動作しますが、パラメータが正しい順序になっている場合にのみ、のようなそれらはサーバー上のストアドプロシージャに追加されます。 この現象は、最初に述べた最初のオプションでは発生しません。このオプションを使用すると、パラメータを直接指定できます。
サーバー上のSPのコードは、そのように開始します。
ALTER PROCEDURE [dbo].[sp_002_test_tabellenparameter]
-- Add the parameters for the stored procedure here
@str_test nvarchar(max) = NULL,
@str_test2 nvarchar(max) = NULL
私は30個の以上のパラメータを持つストアドプロシージャの多くを持っており、これらのパラメータのいくつかは、時には必要とされていないと私はしないでください正しい順序について「くそ」をしないでください:D
私はAccessで使用しているパラメータの名前は関係ありません。
私の責任はどこですか?
ありがとうございました!初期化する:)
アタッチメントコード:
Dim cmd_temp As ADODB.Command
Dim adoconn_connection_tmp As ADODB.Connection
Set adoconn_connection_tmp = New ADODB.Connection
Set adoconn_connection_tmp = ADOConnObj
Set cmd_temp = New ADODB.Command
cmd_temp.CommandType = adCmdStoredProc
cmd_temp.CommandText = str_prozedurname
cmd_temp.ActiveConnection = adoconn_connection_tmp
Set init_adodbcommand = cmd_temp
End Function
'cmd_temp.NamedParameters = True'という行をコマンドオブジェクトイニシャライザに追加すると、それは役に立ちますか? – Arvo
あなたはそれをしました。ありがとうございます:D – John
私が知っている限り、ADOパラメータは、注文に従います。 @Arvoがあなたが明示的に名前のセットを整列させることを示唆していない限り、与えた名前は単にローカルコレクション名であり、保存されたproc named paramsに対応する必要はありません。また、(デフォルト値を設定しているので)保存されたproc [paramsは両方ともオプションです](https://technet.microsoft.com/en-us/library/ms189330(v = sql.105).aspx)に注意してください。したがって、1つ、2つ、またはすべてのパラメータを追加することができ、プロシージャを実行する必要があります。 – Parfait