前提・実現したいこと
Access 2019 でアプリケーションを作成中です。
複数人が同時にアクセスできるようSQLserver でデータを管理することになっています。
Accessのクエリーでデータ処理を行うと、一部の処理で重たくなるので、SQLサーバのストアード・プロシージャーを使うこととしました。
やりたいことは、koujiNoでリレーションがはられている各テーブルのkoujiNoを別の番号に変更することです。
Accessのクエリを用いても実行出来ますが、
・データ件数が多くなると処理が重たくなること
・transaction処理としたいこと
などを勘案して、ストアード・プロシージャーで処理するのが適切だと考えています。
発生している問題・エラーメッセージ
accessのVBAからストアード・プロシージャーを呼び出そうとしているのですが、エラーが発生して実行出来ません。
エラーは .execute で発生します。
うまくパラメータを指定できないためだと思われます。
「実行時エラー '-2147217904(80040e10)' プロシージャまたは関数 'change_No'にはパラメーター'@oldNo'が必要ですが、指定されませんでした。」
該当のソースコード
VBAで記述
1public function change_No(oldno as long, newNo as long) as boolean 2 Dim cnn As New ADODB.Connection 3 Dim cmd As New ADODB.Command 4(中略) 5 With cnn 6 .Provider = "SQLOLEDB" 7 .ConnectionString = "Data Source=" & sn & ";" & _ 8 "Initial Catalog=" & DSN & ";" & _ 9 "User ID=" & SQLid & ";Password=" & SQLpw & ";" 10 .Open 11 End With 12 With cmd 13 .ActiveConnection = cnn 14 .CommandType = adCmdText 15 .CommandText = "change_No" 16 .Parameters.Refresh 17 cmd.Parameters.Append cmd.CreateParameter("Return", adInteger, adParamReturnValue) 18 .Parameters.Append .CreateParameter("oldNo", adInteger, adParamInput, , oldNo) 19 .Parameters.Append .CreateParameter("newNo", adInteger, adParamInput, , newNo) 20 .execute 21 End With
試したこと
パラメータをapend するところは直接 .createparamete メソッドを使っていますが、一旦変数を介して見たのですが、症状は同じです。
補足情報(FW/ツールのバージョンなど)
SQLserverは15.0.2070 です。
AccessはAccess2019 バージョン2010 です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/12 15:04