UiPath エラーハンドリング「この行は既に別のテーブルに属しています。」

UiPathでデバッグ。この行は既に別のテーブルに属していますとは?

UiPathで「この行は既に別のテーブルに属しています。」とエラーが表示されたことはありませんか?考えられるケースはいくつかあります。今回は考えられるケースのうち、代表的な例を挙げたいと思います。

代表的な例 「データ行を追加」でエラー発生

一番代表的な例は「データ行を追加」ではないでしょうか。データ行を追加とは、指定したデータテーブルの中に追加したいDataRow型配列を入力させるアクティビティなのですが、ここに指定したデータテーブルとは異なるDataRowを入れるとエラー「この行は既に別のテーブルに属しています。」が発生します。

例えば以下のような例。

このケースとだと、多分InDtの先頭行だけを追加したいと思われます。列名も列数もOutDtと一緒なのに、なぜエラーになっちゃうのって思いますよね。実は新規追加したい行はデータテーブル「OutDt」とは異なっているんです。

DataTableに属したDataRowを配列として出力する

DataRowって基本的にDataTable.DataRowと親にDataTableが存在しているんですね。

DataTable
├DataColumns
└DataRows
     └row

なので、DataTable.Rows(0)のように指定した場合、DataRowは既に親が決まってるんです。親を切り替えることはできません。なのでその親離れをするためにDataTalbe.Rows(0).ItemArrayをすることで、このDataRowを親離れすることができます。

コメントは受け付けていません。

目次