質問: juchuDt.Select("XXX_DENNO=" & denNum) For Each a As DataRow In result a.Delete() a.AcceptChanges() Next juchuDt.AcceptChanges() adpt.Update(result) ``` debuggerからjuchuDt.countを見ると確実に減っています。 juchuDt.Select("XXX_DENNO=" & denNum)で指定の番号でSELECTをかけてもDataTableには存在しません。 そしてこのままフォームをクローズする際にコネクション(m_Conn)を.close()して終わらせます。 そして、また開くとデータが存在しているのです(上記codeを実行後も、別のデータを参照した時も消したデータはデータテーブルから消えていたのに、です) 色々検索してみましたが、DataSet.AcceptChanges()で、変更はデータセットのすべてのテーブルのすべての行にコミットされます。と明記されているので上記コードだとadpt.Update(result)で更新されると思ったのですが何か理解していない点があるのでこういう結果を招いていると思います。 不思議なことに、レコード新規登録時のjuchuDt.Rows.Add(wr)はmdbファイルに実際に更新を掛けます。 どなたか心当たりのあるから、ご教授いただけませんでしょうか。よろしくお願いいたします。
回答: Updateメソッドは削除マークをつけているデータをDBから削除し、同時に削除マークをつけているデータを削除します。 AcceptChangesメソッド を実行すると削除マークをつけているデータを削除します。 Updateメソッド を呼び出した時点で、削除マークをつけているデータが無いので削除されません。