使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
MukkuMuku さま
いつもありがとうございます。
やっぱりADO使ってねっていうのが、MSさんの姿勢なのでしょうけど
だったらAccess使わないアプリに変えたほうが早そうなくらいなので
何とか少ない工数で延命したいところです。
他のオプションで試してみますが、たぶんダメなんだろうなぁ・・・。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Acc2010で、DAOを使用して、SQLServer2008R2にあるテーブルに更新する処理を作っています。
もともとはAcc2003でODBCDirectで処理していたのですが、Acc2010で使用不可になったことを受けて
なるべく少ない工数でアップグレードするという作業中です。
<不具合>
「テーブルA」に対して、対象データをDELETEしたあと、新たにデータをINSERT(AddNew)するものです。
Dim WS As WorkSpace
Dim con As Database
Dim rs As RecordSet
Set WS = CreateWorkspace("", "admin", ", dbUseJet)
Set con = WS.OpenDatabase("", False, False, "接続文字列")
WS.BeginTrans
con.Execute "DELETE FROM テーブルA WHERE XXXXX", dbSQLPassThrough
Set rs = con.OpenRecordset("SELECT * FROM テーブルA WHERE XXXXX", dbOpenDynaset, dbSQLPassThrough, dbPessimistic)
rs.AddNew
×××
rs.Edit
rs.Close
WS.CommitTrans
これをすると、OpenRecordsetが、上のExecuteのCommitを待ち続けてタイムアウトになるのですが
同一トランザクション内なのに更新後の結果を参照できないのでしょうか。
これが仕様だとした場合、本来どう処理するべきなのでしょうか。
本当に困っています。
宜しくお願い致します。
使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
MukkuMuku さま
いつもありがとうございます。
やっぱりADO使ってねっていうのが、MSさんの姿勢なのでしょうけど
だったらAccess使わないアプリに変えたほうが早そうなくらいなので
何とか少ない工数で延命したいところです。
他のオプションで試してみますが、たぶんダメなんだろうなぁ・・・。
こんばんは。MukkuMukuです。
んー、どうだろう。別のOptionで試してみるのはどうだろうかと思ってはみたものの、dbUseJetでACE経由で接続されるのかどうか、それで何か問題が発生するかどうか調べたことはないけど、実際のところ大丈夫ですかね。
ODBCDirectがサポートされなくなったのはaccess2007からで、ODBCDirectじゃなくてADO使ってねというのが本来なのでしょうけど。