- ベストアンサー
「この行は既に別のテーブルに属しています。」というエラーが発生しています。対処方法は?
- VS2003のVBで、以下のソースコードを実行した際に「この行は既に別のテーブルに属しています。」というエラーが発生します。
- エラーが発生する原因は、Table2に既に行(Row2)が属している状態で再度Table2に行を追加しようとしたためです。
- 対処方法としては、Row2をTable2から削除するか、新たな行(Row3)を作成してTable2に追加することが考えられます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
お世話になります。 > Dim Row1 As DataRow > Row1("データ1") = 1 これは、実行時に例外(NullReferenceException)が発生するはずです。 > Row1("データ1") = 1 こちらを実行する前に、 Row2 = Table1.Rows(0) とか Row2 = Table1.NewRow とかやってると仮定して、 2 つの DataTable のレイアウトが全く同じならば DataTable.ImportRow メソッド を使われてはいかがでしょうか。 Dim dt As DataTable = New DataTable dt.Columns.Add("Field1", GetType(String)) dt.Columns.Add("Field2", GetType(String)) dt.Columns.Add("Field3", GetType(String)) dt.Rows.Add(New String() {"りんご", "みかん", "ばなな"}) dt.Rows.Add(New String() {"おかし", "ごはん", "おちゃ"}) Dim copyToDt As DataTable = dt.Clone() For Each row As DataRow In dt.Rows If Convert.ToString(row("Field1")) = "おかし" Then copyToDt.ImportRow(row) End If Next
その他の回答 (1)
- ape5
- ベストアンサー率57% (85/148)
検証環境:WinXP SP2 VisualStudio.NET 2002 同じコードでやったのですが、ymdaさんと違うところでエラーが出ました。 で、エラーを解除するために以下のコードを追加しました。 ・・・・・・・・ Dim Row2 As DataRow -------------------------------------- Row1 = Table1.NewRow() ここです Row2 = Table2.NewRow() -------------------------------------- Row1("データ1") = 1 Row1("データ2") = 2 ・・・・・・・・・ これで、エラーは無くて動作します。 同じ環境ではないので、なんともいえませんが、よろしければ試してみてください。
お礼
この方法でできました。ありがとうございます。