- PR -

DataTableをDataSetに再セット

1
投稿者投稿内容
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2005-10-27 13:33
お世話になります。

現在VB.NETで開発を行っているのですが、件名にもあるように、DataTableをDataSetに再セットする方法を悩んでいます。

Dim dt as DataTable = DataSet1.Tables(0)

で取得したdtを再度、DataSet1に再セットしたいのですが、どのようにすればよろしいでしょうか?

変な質問になってしまったかもわかりませんが、アドバイスお願いします。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-10-27 13:41
こんにちは。

そのまま、Tables プロパティを使えばいけるとおもいます。
(削除してから追加かな)
でも、再セットする必要ないのでは?
dt を編集しているという事は、DataSet1.Table(0)を編集しているという事ですし。
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2005-10-27 17:32
囚人さん、ありがとうございます。

説明不足で申し訳なかったのですが、
Dim dt as DataTable = DataSet1.Tables(0)
で取得したDataTableを新しいDataSet2に再セットするイメージです。

「Tableプロパティの削除して追加」とはどういう感じでしょうか?
できれば、具体的に教えていただけると幸いです。

申し訳ありませんが、よろしくお願いします。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-10-27 17:55
なるほど。

DataSet2.Tables(0) = dt
というのが出来なくて困ったのかな。

Tables プロパティの型は何ですか?
そしてその型のヘルプを見ると・・・。
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-10-27 18:07
#教育的指導な流れのため削除(* ̄ー ̄)ニヤリッ

[ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-10-27 18:14 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2005-10-27 18:08
> Dim dt as DataTable = DataSet1.Tables(0)
> で取得したDataTableを新しいDataSet2に再セットするイメージです。

このdtを直接DataSet2に追加しようとするとエラーになりますよね。
で、新しいDataTableを一個つくってやって、そこにDataTableのClone()メソッドを
使ってないようをコピー。
そのうえでDataSet2にセットすればよかったかと。


[ メッセージ編集済み 編集者: どっとねっとふぁん 編集日時 2005-10-27 18:09 ]
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-10-27 18:12
>このdtを直接DataSet2に追加しようとするとエラーになりますよね。

あーなるほど。
他の DataSet に属していたら単純にはいかなかったんですね。
失礼しました。
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-10-27 19:33
今晩は、でっちです。

とりあえず、ピンポイントで
引用:

どっとねっとふぁんさんの書き込み (2005-10-27 18:08) より:

で、新しいDataTableを一個つくってやって、そこにDataTableのClone()メソッドを
使ってないようをコピー。



データを含めて複写する場合は、Copyメソッドでは?
Cloneは構造だけの複写だったと記憶しています。

「元のDataSetから削除して、別のDataSetに追加」する方法も、今試してみたら動きました。
ただ、「元のDataSetからDataTableを削除する」ことは当然元のDataSetの構造を壊すと言うことですので、
その是非を考慮に入れた上で、複写とどちらを採用するか決めた方が良いでしょうね。

個人的には、一度作ったDataSetを破壊するような設計(実装)はどうかと思います
とりあえず複写に1票
1

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