- PR -

.net DataSet内のテーブルの値の退避方法

1
投稿者投稿内容
ピン
会議室デビュー日: 2007/05/16
投稿数: 18
投稿日時: 2007-08-21 15:59
お世話になります。

DataSet内のテーブルの構造とデータを退避しておいて、Datasetのテーブルの内容が
ユーザに書き換えられてもキャンセル処理によって変更をキャンセルしたいです。

以下のように

byref pDatasetTable As Data.DataTable

wkTable = pDatasetTable '←パラメータで受け取ったDatasetのテーブルインスタンス
wkTableBackUp = pDatasetTable'←バックアップ
 ・
 ・
 ・
wkTable のデータ内容を変更(画面処理など)・・・@
 ・
 ・
キャンセルして@の処理をキャンセルしたい(キャンセルが無ければそのまま)
pDatasetTable = wkTableBackUp ・・・A

↑のようにしても結局
pDatasetTable
wkTable
wkTableBackUp
の中身はすべて編集後の値で同一になってしまいます。

このようなデータの退避は
データを配列か何かに退避して、ループ処理などで元にもどすほか方法がないのでしょうか?
ご教授願います。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-08-21 16:43
pDatasetTable,wkTable,wkTableBackUpはデータセットのインスタンスそのものではなく、インスタンスを参照する参照型の変数です。ですので、
wkTable = pDatasetTable
とやってもpDatasetTableが参照しているインスタンスをwkTableでも参照するだけで、データセットのインスタンスが別にできるわけではありません。
同じ内容のインスタンスを作りたい場合はCopy()メソッドを使うと良い…かな?
http://msdn2.microsoft.com/ja-jp/library/kax0zhe7(VS.80).aspx
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2007-08-21 17:31
RejectChanges
ピン
会議室デビュー日: 2007/05/16
投稿数: 18
投稿日時: 2007-08-21 18:25
回答ありがとうございます。
Copy()メソッドの存在は知っていたのですが、以前ちょっとやってみたら
うまくいかなかったのですが、改めてやってみたらうまくいきました。
ありがとうございました。



1

スキルアップ/キャリアアップ(JOB@IT)