はじめまして、AARといいます。
初めての投稿なので無礼があったらすみません。
現在、VB6(SP6)professional でACCESSを使ったデータベースを作成しているのですが、ADOをつかってMDBを更新すると、form上に配置してあるDBリストの表示も更新するようにしたいのですがうまくいきません。ソースの方は以下のようになっています。
'参照設定;[Microsoft ActiveX Data Objects 2.1 Library]
Private Sub Command1_Click()
Dim cnADO As New ADODB.Connection
Dim rsADO As New ADODB.Recordset
Dim dmy As Variant
cnADO.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=[データベース名];"
rsADO.Open "[テーブル名]", cnADO, adOpenKeyset, adLockOptimistic
With rsADO
.AddNew
.Fields("[colum名]").Value = DBList.VisibleCount + 1
.Update
End With
End If
Data1.Refresh
DBlist.Refill
End Sub
データベースの更新のほうはうまくいっております。表示だけうまくいきません。
どなたか詳しい方ご教授願います。よろしくお願いいたします。
ADODB でデータ更新の後、
Data1.Refresh
…のみを0.5秒ごとに3回くらいやったら更新されました。
……一応、情報ということで。
Jet(MDBファイルを読み書きするデータベースエンジン)の場合、
読み込む側のReadキャッシュと、書き込んだ側のWriteキャッシュ、それから、
OSのWriteキャッシュ等の絡みでいくらかの遅延が生じる場合があります。
トランザクションを利用して更新したり、Readキャッシュをフラッシュすることで、遅延を少なくすることが可能です。
Jet Engineのキャッシュとその制御
http://www.canalian.com/workshop/access/JetCache.html
丁寧かつ、適切な解答をいただきありがとうございました。
特攻隊長まるるうさんの通りにソースを変更すると、更新することができました。
また、だいさんの言う通りにすると遅延を減らすことができました。
お二方、本当にありがとうございます。
また、どうしてもわからないことが出てきましたら書き込ませていただきますで、
その際はよろしくおねがいします。