トップ回答者
フォームのテキストボックスにデータ連結したページを変更した後に、DataAdapter.update で、データが更新されたことになっている

質問
-
初心者です。
VB.NET2003 にてデータベースアプリの住所録を作成しています。
データベースはSQLServer2000です。
VBのSQLDataAdapterウィザードでデータアダプター(SqlDAAddress)、データセット(DataSet)を作成後、フォームのテキストボックスにデータを連結して、ページ切り替えのボタンを配置してMe.BindingContext(DataSet,"Table住所").Positionにてページをきりかえています。
フォームのClosedイベントで、
Dim intRow As Integer
Me.BindingContext(DataSet,"Table住所").EndCurrentEdit()
intRow = SqlDAAddress.Update(DataSet,"Table住所")
Console.WriteLine("変更数 = " & intRow)end sub
データベースをアップデート後に、変更されたレコード数をコンソールに出力しています。
このときどういうわけか、ページを変更(次のレコードを表示)して、フォームを閉じると、intRowsにゼロ以上の値が
入ってしまいます。連結したテキストボックスの値を変更していないにもかかわらず、データが更新されたように
なってしまいます。このようなことを回避できるのでしょうか?
つまりページを変更しただけでは、データセットが更新されないようにしたいのです。
ご教授よろしくお願いします。
回答
-
このサイトに詳しく書かれています。
私はあまり詳しくはありませんが知っている情報をお伝えします。
変更されたDataSetを取得する方法は「DataSet#GetChanges()」メソッドです。
変更された行の確認は「DataSet#HasChanges()」メソッドで確認できるみたいです。
ページというのがよくわかりませんが、ひとつのフォームに対して別レコードのデータを表示させているということでしょうか?
推測ですが動的にバインド先を変えて表示させればうまく行くんじゃないかと思います。
バインドではなく別の方法で表示させるデータを変えた場合DataSetの内容も書き換わるんじゃないでしょうか?
すべての返信
-
このサイトに詳しく書かれています。
私はあまり詳しくはありませんが知っている情報をお伝えします。
変更されたDataSetを取得する方法は「DataSet#GetChanges()」メソッドです。
変更された行の確認は「DataSet#HasChanges()」メソッドで確認できるみたいです。
ページというのがよくわかりませんが、ひとつのフォームに対して別レコードのデータを表示させているということでしょうか?
推測ですが動的にバインド先を変えて表示させればうまく行くんじゃないかと思います。
バインドではなく別の方法で表示させるデータを変えた場合DataSetの内容も書き換わるんじゃないでしょうか?
-
こんにちは。森田 知良です。
レゲレゲさん、trapemiyaさん、有用な情報ありがとうございました。
vamtnさん、フォーラムのご利用ありがとうございます。
レゲレゲさん、trapemiyaさんの情報は、有用な情報と思われましたので、
勝手ながら回答済みチェックを付けさせていただきました。
追加の質問等ある場合は、是非もう一度投稿してくださるようお願いします。回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
有効な回答があった場合は、なるべく回答済みボタンを押してチェックを付けてくださるようお願いします。なお、vamtnさんの意図しない回答にチェックが付いていた場合は、
回答済みチェックを解除することもできますのでご確認ください。
それでは、これからもフォーラムのご利用をよろしくお願いいたします。