• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:この行は既に別のテーブルに属しています)

「この行は既に別のテーブルに属しています。」というエラーが発生しています。対処方法は?

このQ&Aのポイント
  • VS2003のVBで、以下のソースコードを実行した際に「この行は既に別のテーブルに属しています。」というエラーが発生します。
  • エラーが発生する原因は、Table2に既に行(Row2)が属している状態で再度Table2に行を追加しようとしたためです。
  • 対処方法としては、Row2をTable2から削除するか、新たな行(Row3)を作成してTable2に追加することが考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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

参考URL:
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfSystemDataDataTableClassImportRowTopic.
ymda
質問者

お礼

この方法でできました。ありがとうございます。

その他の回答 (1)

  • ape5
  • ベストアンサー率57% (85/148)
回答No.1

検証環境:WinXP SP2 VisualStudio.NET 2002 同じコードでやったのですが、ymdaさんと違うところでエラーが出ました。 で、エラーを解除するために以下のコードを追加しました。     ・・・・・・・・     Dim Row2 As DataRow -------------------------------------- Row1 = Table1.NewRow() ここです Row2 = Table2.NewRow() --------------------------------------     Row1("データ1") = 1     Row1("データ2") = 2     ・・・・・・・・・ これで、エラーは無くて動作します。 同じ環境ではないので、なんともいえませんが、よろしければ試してみてください。