入れ子状態のForEachRowアクティビティでDataTable間データ転記は可能?

こんにちは。
UiPath Studio 2024.4.0 Community editionのユーザです。

1.やりたいこと
dt_Datatableの列名は{“TimeStamp”,“Level”,“Message”}
dt_Datatable2の列名は{“Start”,“End”,“TimeSpan”,“Status”}
になります。

dt_Datatableにはデータが埋まっているが、dt_Datatable2は空の状態です、
この前提で、ある条件がマッチした場合にdt_Datatableからdt_Datatable2にデータ転記したいです。

2.知りたいこと

この前提で、dt_DatatableをForEachRowアクティビティで回して、
Row(“Message”).ToString.Contains(“1番目の処理を開始(初回実行)”)
の条件がマッチした場合に、dt_Datatable2に

Row2(“Start”)=Row(“TimeStamp”)

の代入文で、dt_DatatableのRow(“TimeStamp”)をRow2(“Start”)に転記できるでしょうか。(添付画像参照


dt_Datatable2 は当初は空の状態、ということなので、dt_Datatable の繰り返しで条件にマッチした行のデータを、dt_Datatable2 に新しい行として追記していきたい、ということでしょうか。

それであれば、下記の流れで作れるかと思います。

  • 代入 で、 newRow = dt_Datatable2.NewRow と作成
    • 左辺の newRowSystem.Data.DataRow型にする
  • 代入で、newRow("Start") = row("TimeStamp") と作成
    • 他の列名についても同様に作成
  • データ行を追加(Add Row Data)で、dt_Datatable2newRow を追加する

回答ありがとうございます。これから検証してみます。
ちなみに私の案でも、内側のForEachRowアクティビティ内にBreakアクティビティを追加すればいけそうな気がしたのですが、いかがでしょうか。(添付画像参照

例外が発生するかどうかの観点ですと「列の型に依存する」になります。
例えば双方object型なら例外は発生しません。

さすがUiPath、難解ですね。
すみません。私のスキルでは私の質問に対しどうしてそのような回答になるのか全く理解できませんでした。内側のForEachRowアクティビティ内にBreakを挿入してもダメでしょうか。

上記からですと各DataTableがどのように作られたがかわりませんので、上記の回答をしました。
例えばもし双方ともEXCELから範囲読み込みで出力したものであれば、例外は発生しません

ただし実現したいことが上記で想定通りになるかは、最初のPOSTからだけではわかりませんので、ダミーでも良いので具体的な入力と出力を共有いただいた方が良いかと思います。

Row2 の元になる dt_Datatable2 は、最初は空の状態(=行のデータが1つもない状態)なのですよね?
それならば、dt_Datatable2 に対するループ処理が発生しないです(行データの数だけ繰り返す→行がなければ繰り返されない)。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.