2017-06-20 11 views
0

私は古いMS-Access(2007)アプリケーションで作業しています(メンテナンス+変更)。現在の変更では、コード部分をselect * fromから単純なテーブル(1つのvarchar列のみ)を返すストアドプロシージャの呼び出しに変更します。ここでmsアクセスADO - ストアドプロシージャから返されたレコードセットを取得できません。

は、MS-Access内のコードの一部です:

: 
Set Conn1 = CurrentProject.Connection 
Set Cmd1 = New ADODB.Command 
Cmd1.ActiveConnection = Conn1 
Cmd1.CommandText = "p_Labels_Print" 
Cmd1.CommandType = adCmdStoredProc 

Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Button_type", adInteger, adParamInput) 
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Sampling_Request", adInteger, adParamInput) 
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Place", adVarChar, adParamInput, 16) 
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Sampler_Code", adVarChar, adParamInput, 16) 
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Total_Copies", adInteger, adParamInput) 
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Print_Option", adInteger, adParamInput) 
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Print_Option", adVarChar, adParamInput, 16) 

Cmd1.Parameters(0).Value = 2 
Cmd1.Parameters(1).Value = 2878954 
Cmd1.Parameters(2).Value = "0C9991" 
Cmd1.Parameters(3).Value = 89029 
Cmd1.Parameters(4).Value = 10 
Cmd1.Parameters(5).Value = 1 
Cmd1.Parameters(6).Value = "S-SAPTEST" 
Set Rs1 = Cmd1.Execute() 


' Process results from recordset, then close it. 
: 
Rs1.Close 
: 

今、私は私がにプロシージャ内からログインしていますので、手順が正しいパラメータ(および値で呼び出されていることを知っていますデバッグテーブル、と私はすべてのパラメータを受信し、(パラメータ「4」は、規定のように)返されたテーブルが正確に10個のレコードが含まれていることをされていることがわかり

返されるテーブルは次のようになります。

+------------------------------------------------------+ 
| One_Sticker           | 
+------------------------------------------------------+ 
|[email protected][email protected]@[email protected]@[email protected]@[email protected] | 
|[email protected][email protected]@[email protected]@[email protected]@[email protected] | 
|[email protected][email protected]@[email protected]@[email protected]@[email protected] | 
|[email protected][email protected]@[email protected]@[email protected]@[email protected] | 
|[email protected][email protected]@[email protected]@[email protected]@[email protected] | 
|[email protected][email protected]@[email protected]@[email protected]@[email protected] | 
|[email protected][email protected]@[email protected]@[email protected]@[email protected] | 
|[email protected][email protected]@[email protected]@[email protected]@[email protected] | 
|[email protected][email protected]@[email protected]@[email protected]@[email protected] | 
|[email protected][email protected]@[email protected]@[email protected]@[email protected] | 
+------------------------------------------------------+ 

MS-Access内では、ステートメントRs1.CloseとブレークポイントをRs1に設定しました。そして、Rs1の結果を掘り下げると、何もありません(Rs1のウォッチウィンドウ内にはFields > Count 0という意味です)。

私は結果を受け取るために何か(何らかの方法で変数をRs1以外に定義するようなもの)がないのですか?

ご迷惑をおかけして申し訳ありません。

答えて

0

問題が見つかりました。ステートメント:

SET NOCOUNT ON ; 

は、呼び出されたストアドプロシージャの先頭にありませんでした。一度追加されると、すべてが期待通りに機能し始めました。

関連する問題