- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vbでDataTableの抽出コピー)
vbでDataTableの抽出コピー方法
このQ&Aのポイント
- vbでDataTableから条件抽出したデータで新しいDataTableを作成する方法について紹介します。条件抽出したデータの件数は異なるかもしれませんが、ヘッダーなどの内容は同じにしたい場合に便利です。
- 試作1や試作2の方法ではDataRowの使いまわしやワンクッションの追加だけではうまくいかないことがあります。そのため、個別セット以外には適切な方法はないかと考えました。
- 良い方法として、DataTable2をDataTable1と同じ構造にクローンして作成し、ForEachループを使用して条件に合致するDataRowを選択して新しいDataRowを作成し、DataTable2に追加する方法があります。個別に設定する必要はありますが、条件抽出したデータを正確に新しいDataTableに複写することができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
dim dv as DataView dim rd as DataTableReader DataTable2 = DataTable1.Clone ' 1)選択条件から DataViewを生成して dv = new DataView( DataTable1, "条件", "ソート", DataViewRowState.CurrentRows) ’2)ToTableで DataTableを生成し これを引数にDataTableReaderを生成 rd = new DataTableReader(dv.ToTable()) '3)Loadメソッドで 行データを取り込み DataTable2.Load( rd ) rd.Close といった具合でできますよ
お礼
ありがとうございます。 DataViewとDataTableReaderを使うわけですね。 こちらでもアレコレ試してみましたが、 偶然、「.ItemArray」同士でセットしてもいける事が分かりました。 DataTable2 = DataTable1.Clone For Each DataRow1 In DataTable1.Select(条件, ソート) DataRow2 = DataTable2.NewRow DataRow2.ItemArray = DataRow1.ItemArray DataTable2.Rows.Add(DataRow2) Next DataRow1