So-net無料ブログ作成
検索選択

DataTable間でDataRowをコピーする [.NET]

データテーブルAの特定の行を同じ構造を持ったデータテーブルBにコピーする方法について説明します。

最初、何も考えずにこうかなと考えて作ったら失敗しました。
【失敗例】
Private Sub CopyDataRow()
'データテーブルAの作成
Dim oTblA As DataTable = New DataTable
oTblA.Columns.Add("shain_cd")
oTblA.Columns.Add("shain_nm")
oTblA.Columns.Add("remarks")
'5行作成
For nRow As Integer = 0 To 4
Dim oRow As DataRow = oTblA.NewRow
oRow("shain_cd") = 1
oRow("shain_nm") = "社員" & nRow
oRow("remarks") = nRow
oTblA.Rows.Add(oRow)
Next

'データテーブルAからデータテーブルBを作成
Dim oTblB As DataTable = oTblA.Clone

'データテーブルAの先頭行を取得し、データテーブルBに追加
Dim oRowCopy As DataRow = oTblA.Rows(0)
oTblB.Rows.Add(oRowCopy) End Sub

とすると、oTblB.Rows.Add(oRowCopy)の部分で"この行は既に別のテーブルに属しています。"というエラーメッセージが出力されました。
oRowCopyはoTblAに属しているから移動できないとのことでした。
この場合はImportRowを使用します。

oTblB.ImportRow(oRowCopy)

とすることで解決しました。

結果(イミディエイト ウインドウ
? otblB.Rows(0)("shain_cd")
"1" {String}
String: "1"
? otblB.Rows(0)("shain_nm")
"社員0" {String}
String: "社員0"

以上です。[グッド(上向き矢印)]





nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました