いつもお世話になっております。
WinXP VB2005 Access2003の環境で、以下のHPを参考に、
ADO.NETを利用してDataGridViewを表示しています。
http://park5.wakwak.com/~weblab/clsDBIO.html
上記clsDBIOに下記のDelete処理と全データ取得処理をDeleteDataとGetDataAllという名前で追加しました。
http://park5.wakwak.com/~weblab/deleteOne.html
http://park5.wakwak.com/~weblab/selectAll2.html
Form1にDataGridView1を設置し、MDBのデータを表示します。
Button1に、以下の通り選択行削除処理を書きました。
Dim dtData As DataTable = New DataTable()
dbIO = New clsDBIO()
dbIO.DeleteData(intRowIndex) '1行削除(行番号を渡す)
dbIO.getDataAll(dtData) '削除後の全行データをdtDataに取得
Me.DataGridView1.DataSource = dtData 'データソースを設定し直す
Me.DataGridView1.Refresh()
これで、削除後のデータを表示したいのですが、
削除したはずの行が表示されてしまいます。
・フォームロードでもGetDataAllをしてDataSourceを設定しています。(デザイナでは指定無し)
・MDB上では正しくデータが削除されています。
・一度Form1を閉じて再表示すると削除後の正しいデータになります。
・デバッグモードでステップ実行すると削除後の正しいデータになります。
・ボタンを別途追加し、最後の3行を実行すると削除後の正しいデータが表示されます。
Button1で削除した時に削除後のデータを表示するには、どのようにしたら良いのでしょうか?
(削除の場合のみを例にしましたが、追加・変更時も同じ症状がでています)
宜しくお願いします。
clsDBIO内の全ての処理にTry Finallyを入れて、
Finallyの中でDBをクローズするようにしたところ、
正常に動くようになりました。
特にエラーが出てたわけでは無いので、
不具合の理由がよくわかりませんが、
一通りテストしてみて良さそうなので解決とします。