前提
既存をコードをトランザクション処理に変更したく、
BeginTrans、RollbackTrans、CommitTransを入れてみたがうまくいきません
該当のソースコード
現状のコード→正常に動作します
sSQL = "" sSQL = sSQL & " DELETE FROM " sSQL = sSQL & " usermanagement" sSQL = sSQL & " WHERE" sSQL = sSQL & " LoginName = ?" Set oCmd = CreateObject("ADODB.Command") oCmd.CommandTimeout = 1200 oCmd.ActiveConnection = oConn oCmd.CommandType = 1 oCmd.CommandText = sSQL oCmd.Parameters.Append oCmd.CreateParameter("@LoginName", 3, 1, , strUserID) Set oRS = oCmd.Execute()
修正後のコード→ エラーになりmsgbox("RollbackTrans")が表示されます
set oConn = CreateObject("ADODB.Connection"): oConn.ConnectionTimeout = 20 oConn.CommandTimeout = 1800 oConn.Open(CommonDSN): oConn.BeginTrans'追加 sSQL = "" sSQL = sSQL & " DELETE FROM " sSQL = sSQL & " usermanagement" sSQL = sSQL & " WHERE" sSQL = sSQL & " LoginName = ?" Set oCmd = CreateObject("ADODB.Command") oCmd.CommandTimeout = 1200 oCmd.ActiveConnection = oConn oCmd.CommandType = 1 oCmd.CommandText = sSQL oCmd.Parameters.Append oCmd.CreateParameter("@LoginName", 3, 1, , strUserID) Set oRS = oCmd.Execute() if Err.Number <> 0 then oConn.RollbackTrans'追加 msgbox("RollbackTrans") else oConn.CommitTrans'追加 msgbox("CommitTrans") end if
試したこと
何が悪いでしょうか
アドバイスお願いいたします。
追記
ちなみに下記は問題なく実行できます。
これをパラメータ化する方法が知りたいです
oConn.BeginTrans
sSQL = ""
sSQL = sSQL & " DELETE FROM "
sSQL = sSQL & " usermanagement"
sSQL = sSQL & " WHERE"
sSQL = sSQL & " LoginName = " & strUserID
call oConn.Execute(sSQL)
if Err.Number <> 0 then
'更新失敗
oConn.RollbackTrans
else
'更新成功
oConn.CommitTrans
end if
回答1件
あなたの回答
tips
プレビュー