既にデータテーブルに含まれているか確認するActivity

excelからデータを読み取り、仮に3108という文字列がそのdata tableに含まれていれば、何もせず、含まれていなければ、最終行に追加する場合分けのActivityを作っております。

◎現状できたこと
確かめたいKEY:Td(=3108)という変数を定義。

For each row でエクセルから読み込んだデータテーブル(dt1)を繰り返し確認する。

For each row in dt1

If Activityで
Condition: rowItem(0).ToString.Contins(Td)

Then :message box (“該当あり”)

Else: message box (“該当なし”)

まずは上記のように作ってみましたら、該当なしの場合、既存のデータテーブルに関してActivity通り、繰り返し該当なしというメッセージボックスが何回も出てきます。

ほかの方法で一気にデータテーブルから確かめたいKEYがあるかどうか確認するActivityはございますでしょうか?
本日UiPathをアップデートしまして、新しいDataTable Activityがパッと見、増えているようですのでお聞きしたいと思います。

1 Like

いろいろ方法はありますが・・・
① 2018.2以降なら [Lookup Data Table]というアクティビティで実現できますね。
https://activities.uipath.com/docs/lookup-data-table

② 2018.1以前の場合は、vb.netライク(そしてSQLライク) になりますが、DataTable変数に対しSelect命令を書くことで実現できますね。
DataTable.Select メソッド (System.Data) | Microsoft Learn
[Assign]アクティビティを使って、dt1.Select(Key=‘3108’")なんて書いて、該当行数をDataRowで取得
なんて感じでできそうです。

1 Like

@yukino

教えて頂きありがとうございます。

Lookup datatableに関して

上記2つのサイトを拝見しまして、Lookup Data Table
仮にdatatableに無かった場合、エラーが表示されてしまいますが、
その場合、データを追加することは可能でしょうか?

エラー内容:object reference not set to an instance of an object.

「object reference not set to an instance of an object」は、検索対象とするDataTableが空よ、もしくは初期化されてないよ、に見えます。[Property]欄に設定されている内容を再度確認してみてください。

[Lookup Data Table]アクティビティですが、
[LookupValue]に記載した文字列がない場合は、[Output]の[RowIndex]に [-1]が返ってくるようなので、
[RowIndex]に指定した変数を[If]アクティビティなりで判定してデータ追加を行うことになりましょう。
DataTableへのデータ追加は、[Add DataRow]アクティビティを使うことになります。
https://activities.uipath.com/docs/add-data-row

[AddDataRow]は、プロパティ[ArrayRow]に登録データを配列で書くのが一番簡単な気がします。
{“aaa”,“bbb”,“ccc”} ってな感じで登録データを作ってみてくださいませ。

1 Like