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
yukino
(kawahara)
2
いろいろ方法はありますが・・・
① 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.
yukino
(kawahara)
4
「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