RPA UiPathでやりたいこと
DataRowのカラムを頭からおしりまで比較していって、差分があるかどうかをチェックして、差分があれば指定の印をつけます。
Boothでダウンロードできます
作るのが面倒なかたは、Boothでライブラリをダウンロードできます。
https://misk.booth.pm/items/1905849
インターフェイス(引数)
物理名 | 型 | I/O | 説明 |
---|---|---|---|
in_drOriginal | DataRow | in | 基準になるDataRow |
in_drComparison | DataRow | in | 比較するDataRow |
in_UpdateMark | String | in | 差分があるところにつける印 |
out_drResult | DataRow | out | 処理が成功したかどうか |
out_isChange | Boolean | out | 差分があるかどうか |
変数
物理名 | 型 | スコープ | 説明 |
---|---|---|---|
METHOD_NAME | 全体 | 処理名 | |
jsonObject | JObject | 全体 | リストに格納するディクショナリ |
jsonText | String | 全体 | ファイルから |
処理の流れ
変数初期化
drOriginal = in_drOriginal.Table.NewRow drOriginal.ItemArray = in_drOriginal.ItemArray
drComparison = in_drComparison.Table.NewRow drComparison.ItemArray = in_drComparison.ItemArray
DataRowはinの引数であっても、触ると値が変わってしまうのと、=での代入はアドレスの代入になるため、値のみをコピーして使います。
out_drResult = in_drComparison.Table.NewRow out_drResult.ItemArray = in_drComparison.ItemArray
DataRowの差分有無チェック
compare = DataRowComparer(Of DataRow).Default
DataRowCompareを使うために、インスタンスを生成します。
compare.Equals(drOriginal, drComparison)
DataRowが同じであればTrue、違う場合はFalseが返却されます。
変更箇所チェック
out_drResult(colIndex) = String.concat(in_UPdateMark, col.ToString)
一致しない場合は、更新マークを付加します。