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++