【UiPath】DataRowの差分を比較する

RPA UiPathでやりたいこと

【UiPath】DataRowの差分を比較する
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 全体 ファイルから

処理の流れ

変数初期化

【UiPath】DataRowの差分を比較する

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の差分有無チェック

【UiPath】DataRowの差分を比較する

compare = DataRowComparer(Of DataRow).Default

DataRowCompareを使うために、インスタンスを生成します。

compare.Equals(drOriginal, drComparison)

DataRowが同じであればTrue、違う場合はFalseが返却されます。

変更箇所チェック

【UiPath】DataRowの差分を比較する

out_drResult(colIndex) = String.concat(in_UPdateMark, col.ToString)

一致しない場合は、更新マークを付加します。

コメントを残す

メールアドレスが公開されることはありません。