データテーブルの一部の列を別のデータテーブルに追加したい。

データテーブルAとデータテーブルBがあります。
それぞれ、次のような列をもっています。
Aの列:注文番号、商品番号、処理結果、処理日時
Bの列:注文番号、商品番号

この時、Aのデータのうち、処理結果が"未処理"のものを抽出してBに追加したいです。
Bはもともとデータが入っており、その下に追加するイメージです。

次のように作成してみたのですが、繰り返しの数が増えてパフォーマンスが良くありません。
列の順番が入れ替わったりしても対応できるようにしたいです。
どのように構築するのが効果的でしょうか。

こんにちは

データテーブルAをフィルターして、それをベースにデータテーブルBに追加する方向性が良いように思えます。
注文番号はユニークでしょうか?
ダミーでも良いので具体的な入力データと期待する出力を添付いただくとより良いかと思います。

単純には以下のような感じになると思います。

Sample
Sample20251212-1.zip (227.9 KB)

いつもありがとうございます。

試しに作成してみましたが、画像のとおり、エラーになってしまいます。
AはExcel、BはCSVファイルです。
データ型の問題だとは思いますが、データテーブルのデータ型の編集はできるのでしょうか。

注文番号と商品番号は、二つの組み合わせがユニークになります。(それぞれはユニークではない。)
簡単なサンプルですが、以下のようなデータを想定しています。

データテーブルA(元はExcel)

注文番号 商品番号 処理結果 処理日時
1111-1212-00001 30452 未処理 2025/12/12
1111-1212-00002 30452 未処理 2025/12/12
1111-1212-00002 30456 未処理 2025/12/12
1111-1212-00003 30477 未処理 2025/12/12
1111-1212-00004 30479 未処理 2025/12/12

データテーブルB(元はCSV)

注文番号 商品番号
1111-1211-00001 30452
1111-1211-00002 30479

期待する出力

注文番号 商品番号
1111-1211-00001 30452
1111-1211-00002 30479
1111-1212-00001 30452
1111-1212-00002 30452
1111-1212-00002 30456
1111-1212-00003 30477
1111-1212-00004 30479

こんにちは

ご推察の通り列の型の問題かと思います。
残念ながらDatatable の列の型は変更できないのて、別のDataTableに移し替えてからマージするか、個別に列を追加していくかになると思います。

前者は例えば以下のようになるかと思います。

1. MergeDataTableの直前で、BuildDataTableアクティビティで列の型がString型のDataTable(dtTemp2)を作成
2.代入アクティビティで以下を代入

 dtTemp2 = dtTemp.AsEnumerable.Select(Function(r) dtTemp2.LoadDataRow({r(0).ToString,r(1).ToString},False)).CopyToDataTable()

確認遅くなりすみません。

データテーブルの型はあとから編集できず、なんとか迂回させて追加するしかないのですね。
効率よく実現できる方法はないか、WFの全体構造から見直してみます。

ありがとうございました。

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