DataSet.HasChangesについて

解決


わたしき  2007-04-17 21:06:01  No: 136105

XpPro+VB2005
お世話になります。

DataSet.HasChangesでデータに変更があったかを判定したいのですが
下記のときTrueになりません。
(1)何も無い空のテーブルに1行新規追加した時
(2)既存のデータを変更したが行移動しなかった時

これは正しい動きなのでしょうか
ヘルプを見ても上記状態時はTrueになるようにしか読み取れません。
それとも何か設定が足りないのでしょうか。

ご教示お願いいたします。


特攻隊長まるるう  2007-04-18 04:19:39  No: 136106

>(2)既存のデータを変更したが行移動しなかった時
についてはSQLサーバー付属の Enterprise Manager でも
Access でもそういう動きをしてますね。

編集中のレコードはセル上でのみ変更されてて、実際の
テーブルの値はレコードを移動するまで変更されません。
そのまま[Esc]キーを押すと変更前の値に戻ったりします。
変更は確定していません。その状態では DataSet のテーブル
(DataTable)の値も変更されていないのでは?

データベースはレコード単位で意味がありますから、更新も
レコード単位なのでは?

>(1)何も無い空のテーブルに1行新規追加した時
は、よく分からないけど。。。
コードでテストした限りでは True を返しました。

これも画面での話ですか?その状態で、実際に DataTable に
レコードが追加されていましたか?
まだ変更が確定されていない状態なのでは?


わたしき  2007-04-18 17:51:32  No: 136107

特攻隊長まるるう様 回答ありがとうございます。
> まだ変更が確定されていない状態なのでは?
ご指摘の通りです。EndEditが抜けていました。
本現象はFormを閉じる時にチェックしたかった処理でした。
数日悩んでいたのですが、掲示板に書き込んだ後にEndEditが抜けていたことに気付きました。
お騒がせしました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加