ああああ

DataTableの行を別のDataTableに追加する_UiPath★Tips

DataTableの行を別のDataTableに追加する_UiPath★Tips

例えばこのようなデータテーブル(エクセル)があります。

DT1

 

DT2

 

あるDataTableの行を、もう一つの別のDataTableに入れたい…
(今回だったら、DT1のデータテーブルを、DT2に追加したい…)

そんな時にパっと思いつくのが、「データ行を追加(Add Data Row)」

(Mearg Data Tableアクティビティはおいておいて……)

 

 

DT1というエクセルを読み込み、dataTable1というデータテーブル型の変数に格納。

DT2というエクセルを読み込み、dataTable2というデータテーブル型の変数に格納。

その下に、「条件分岐(If)」で、例えば部署が総務の行だけを追加するということで、Thenの場所に、「データ行を追加(Add Data Row)」をセット。

しかし、実行すると

 

データ行を追加: この行は既に別のテーブルに属しています。

This row already belongs to another table.

 

というエラーが…!

そう、DataTableの行を抜き出して他のDataTableにピッと追加…って、「データ行を追加(Add Data Row)」ではできないのです…

 

そんな時に使うのが、「メソッドを呼び出し(Invoke Method)」

元々あるメソッドを呼び出すアクティビティで、Assignのような左辺への代入を伴わないメソッドを呼び出す時によく使います。

「データ行を追加(Add Data Row)」の代わりに「メソッドを呼び出し(Invoke Method)」をセット。

 

TargetObjectには、追加先のデータテーブル変数(今回は dataTable2)、

MethodNameは、 ImportRow

 

もう一つセットする箇所があります。

プロパティのコレクションをクリック。ここでパラメータ(引数)を設定します。

 

方向は「入力(IN)」、

型は、System.Data.DataRow

値には、繰り返し各行(For Each Row)の行を入れるので、row

 

これで実行してみましょう~

部署が「総務」の行だけ追加されました!

 

—————-

Filter Data Tableを行い、Merge Data Tableを~というやり方でももちろんできますけど、Invoke Methodを使ったデータテーブル操作でした。