質問: "delete from T3 where riyou_no=" & tmp_riyouno _ cn.Execute sql cn.CommitTrans 一連の処理はエラーなく終了し、T2,T3を確認したところ、対象レコードはdeleteされているのですが、T1を開こうとすると、フリーズしてしまいます。accessを強制終了の後再度立ち上げるとT2,T3のdeleteしたはずのレコードが元に戻っています。コミットがうまくいってないと思うのですが、考えられる原因は何なんでしょうか。 因みに、トランザクション処理をコメントアウトすると、T1も対象レコードが追加されています。また、テーブルはすべてsqlserverにあり、リンクテーブルです。 ストアドプロシージャで対応しようと思うのですが、今後のため、このような事象がおこった方がおれば、教えていただきたいです。クローズは少しだけ待ちたいと思います。
回答: access adoのトランザクション 解決していませんけど、こちらの記事は全く同様な症状です。 ODBCではトランザクションは使わない こちらも似た症状です。 SQLServerへのリンクテーブル経由でのアクセスはお奨めしません。 せいぜい、パススルークエリーでの参照に留めておいた方が宜しいかと。 SQLServerに限り、リンクテーブルは遅いです。断然、パススルークエリーの方が高速です。 同じMSの製品なのに、どうしてそうなった? と思わずにいられない位に。 以下は、動きをトレースされた方が居られたので紹介 Access 2013 ODBC リンク テーブル と SQL Server - 6 で本題としては、リンクテーブル経由ではなく、直接接続してのトランザクション制御なら解決すると思います。