トップ回答者
ストアドプロシージャを実行するとAccessが強制終了する

質問
-
お世話になります。現在、下記の様な現象が起き困っております。助けて下さい。
■環境
サーバー:SQL Server2012 Express
OS:Windows7
Office:Access2010■現象
VBA内でストアドプロシージャを実行する際にパラメータが文字列(char、ncharなど)だと
Accessが強制終了されてします。
文字列以外のパラメータの場合は正常に起動します。現在はAccess2010を使用していますが、Windows7 + Access2002でも同じ現象でした。また、同じ環境のパソコンがもう1台あるのですが、そちらの方では正常に起動しています。
■コード
Dim Conn As New ADODB.Connection
Dim Cmd As New ADODB.Command
Dim Para As New ADODB.Parameter
Dim Rst As New ADODB.RecordsetSet Conn = CurrentProject.Connection
With Cmd
.ActiveConnection = Conn
.CommandText = "usp_テスト"
.CommandType = adCmdStoredProc
Set Para = .CreateParameter(, adWChar, adParamInput, 5, "月曜日")
.Parameters.Append Para
End WithRst1.Open Cmd, , adOpenStatic, adLockReadOnly ← 文字列のパラメータの場合はここで強制終了されてしまう。
Set Para = Nothing
Set Cmd = Nothing
Set Rst = Nothing
Conn.Close
Set Conn = Nothing
回答
すべての返信
-
どのようなエラーが出ているのでしょうか? 以下のページを参考にして、エラーの内容を取得できませんか?
接続結果やSQL実行結果のチェックをするサンプル
http://www.happy2-island.com/access/gogo03/capter00701.shtml★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
-
CurrentProject.Connectionを利用されていますが、リンクテーブルを使用されているのでしょうか?
ちなみに私の方で以下のコードで試してみましたが、問題なく挿入できました。一度、CurrentProject.Connectionを使わない方法で試されてみると、問題の切り分けができるかもしれません。Private Sub コマンド0_Click() Dim Conn As New ADODB.Connection Dim Cmd As New ADODB.Command Dim Para As New ADODB.Parameter Dim Rst As New ADODB.Recordset Conn.Open "Provider=SQLOLEDB; Data Source=.\sqlexpress; Initial Catalog=testdb; Integrated Security=SSPI" With Cmd .ActiveConnection = Conn .CommandText = "TESTinsert" .CommandType = adCmdStoredProc Set Para = .CreateParameter(, adWChar, adParamInput, 5, "月曜日") .Parameters.Append Para End With Rst.Open Cmd, , adOpenStatic, adLockReadOnly Set Para = Nothing Set Cmd = Nothing Set Rst = Nothing Conn.Close Set Conn = Nothing End Sub
ADOの参照設定も一番バージョンの低い「Microsoft ActiveX Data Objects 2.0 Library」で試してみましたが、問題無く挿入されました。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/