🐥

Uipath select文でDataRow取得!

2022/07/14に公開

二つのデータテーブルから顧客番号(仮)で紐づけて、値をルックアップしたいというシーンがありました。
その顧客番号は参照先のデータテーブルに複数存在しうる、そして複数存在する場合は全ての行データが必要になります。

「データテーブルを検索」では一つしか取得出来そうにないので、アクティビティを使うなら「データテーブルをフィルター」だと思いますが(私調べ)、select文に慣れておきたい私はあえてselect文を使用しました。

下記のようなデータで、顧客番号ごとに金額の集計をしたいようなシーンです。
参照先には同じ顧客番号が複数存在しますので、こんな時にどうやって金額を取り出すのかやってみます。

*Dt_参照元

顧客番号 氏名 住所
1111111 鈴木 東京都
1111112 木村 東京都
1111113 佐藤 東京都
1111114 中尾 東京都

*Dt_参照先

顧客番号 商品名 金額
1111111 A 1000
1111111 B 2000
1111112 C 5000
1111114 A 1000

select文で絞り込む

最初に顧客番号で行データを絞り込むselect文です。
変数「参照元顧客番号」に参照元の顧客番号を代入しているものとします。

右辺↓

Dt_参照先.select("[顧客番号] = '"+ 参照元顧客番号 +"'")

戻り値はDataRow型の配列になりますので、戻り値を受け取る変数「ary_DataRow」はDataRow型の配列で定義する必要があります。

金額の値を取り出す

配列に入っているDataRow型のデータから金額を取得していきます。

配列の各要素を見ていく必要があるので、「繰り返し(コレクションの各要素)」のアクティビティを使用します。


プロパティでの設定はデータ型をDataRowにしておきます。

まずは金額の値を取り出してみます。
列ヘッダーが「金額」なので、下記のようにしたらOKです。

item("金額").ToString

メッセージボックスで表示してみましょう。

実行!

しっかり表示されました。

今回はメッセージボックスで表示するまでですが、これを変数に入れて足し算の式を用意したら集計が可能です。

まとめ

●データテーブルから特定の条件に合う行を取り出す

DataTable.select("条件式")

※戻り値はDataRow型の配列

●DataRow型の配列は「繰り返し(コレクションの各要素)」処理する

●繰り返しの中で、特定の列の値を取得する

item("金額").ToString

※現在処理されている値をitemとした場合

DataRowはデータテーブル各行の繰り返しの中でしか扱ったことがなかったため、結構調べて理解したので勉強になりました。
以上です。

Discussion