-1

私は Access を初めて使用し、レコードセットに行き詰まっています。正しい接続文字列を使用して Access からプロシージャを実行しています。手順は完全に正常に実行されています。

Set con = New ADODB.connection  
Set rs = New ADODB.Recordset  
con.Open "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"                // Connection string.  
rs.Open "Exec [stored procedure] 'parameter' ", con, adOpenDynamic, adLockOptimistic  

この SQL ストアド プロシージャは、失敗と成功 (プロシージャのステータスを示します) に基づいて 0 と 1 の 2 つの値を返します。

今私の質問は、ユーザーにステータスを表示できるように、アクセスでこの値を取得する方法です。

4

2 に答える 2

1

ストアド プロシージャは、実際には 0 または 1 の値を 1 つだけ返すようです。これは、多くの場合、スカラー値 (値のセットまたはコレクションではなく単一の値) と呼ばれます。

また、ストアド プロシージャにパラメーターを渡す必要があるようです。これは、多くの場合、パラメーター化されたクエリと呼ばれます。ご存じのとおり、パラメーターを使用しないストアド プロシージャを作成することもできます。

Set con = New ADODB.connection  
Set rs = New ADODB.Recordset
rs.CursorType = adOpenForwardOnly
rs.LockType = adLockReadOnly
con.Open "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" '// Connection string.

Dim cmd as New ADODb.Command
cmd.CommandTimeout = 5
cmd.ActiveConnection = con
cmd.CommandText = "SQL GOES HERE"
cmd.CommandType = acCmdStoredProc

Dim param
Set param = cmd.CreateParameter("@productid", adInteger, adParamInput, 0, 0)
cmd.Parameters.Append param
cmd.Parameters("@productid") = 15 'Return the product with ProductID = 15

Set rs = cmd.Execute
'or use:
'rs.Open cmd
Debug.Print rs(0)

rs.close
Set rs = Nothing
Set cmd = Nothing
con.close
Set con = Nothing

Microsoft には、これに関する記事があります。VBScript を使用して記述されていますが、VBA に簡単に適応させることができます。 http://support.microsoft.com/kb/200190

SO:
How to access SQL Server scalar functions in MS Access VB でこれを確認することもできます。

于 2013-07-16T14:39:18.067 に答える