11829 『[W2000/A2000] レコード更新が完了する前の情報を表示してしまう』- とんとん (210.196.88.179) Win:2000 & Acc:2000
ACCESS2000でDAOを使ってモジュールで中レコード更新→終了後レポート表示を行っています。
更新ではDELETEやEDITを使用していますが、レコードの更新が完了する前にレポート表示が行われているようで、正確に表示されません。
色々調べているうちに下記の情報を知ったのですが、それでもうまくいきません。
http://www.canalian.com/workshop/access/JetCache.html
色々やってみたのですが、コードをコメントアウトして減らしていくとうまくいきます。
コメントアウトする部分をあれこれ変えながらやってみたのですが、うまくいく場合と、うまくいかない場合がつかみきれません。
コード自体は悪くなさそうなので、処理をさせすぎるとダメなのかなぁという結論にしかいけませんでした。
何卒知恵をお貸しください。
現在のコードは下記のようになっています。
Set objWs = CreateWorkspace("", "admin", "", dbUseJet)
Set objDB = objWs.OpenDatabase("C:\テスト.mdb")
Set Set_TBL = objDB.OpenRecordset("Tテーブル")
DBEngine.Idle dbRefreshCache
Do Until Set_TBL.EOF = True
(blnFlgの条件を設定するコード)
objWs.BeginTrans
If blnFlg = False Then
Set_TBL.Delete
Else
Set_TBL.Edit
(Fieldsで各フィールドの更新処理)
Set_TBL.Update
End If
objWs.CommitTrans dbForceOSFlush
Set_TBL.MoveNext
Loop
DBEngine.Idle dbRefreshCache
DoCmd.OpenReport "Rテストレポート", acPreview, "", ""
11831 『Re: 解決しました』- とんとん (210.196.88.179) Win:2000 & Acc:2000
お騒がせしまして申し訳ありませんでした。
あれから色々と試したりしていたのですが、どうにもうまくいかず、参考にした
HPを何度も読み直してみて試した事があります。
DBEngine.Idle dbRefreshCache
をレコードセットのオープン前に書く...。
これで万事解決しました。
と言うよりもおもっきり書いてありますね...。
お騒がせしてすいませんでした。
ありがとうございました。
AccBBS 2.07 (Powered By Microsoft Access) (C)1999,2000,2002,2009,2010 RURI++