データテーブルAとデータテーブルBがあります。
それぞれ、次のような列をもっています。
Aの列:注文番号、商品番号、処理結果、処理日時
Bの列:注文番号、商品番号
この時、Aのデータのうち、処理結果が"未処理"のものを抽出してBに追加したいです。
Bはもともとデータが入っており、その下に追加するイメージです。
次のように作成してみたのですが、繰り返しの数が増えてパフォーマンスが良くありません。
列の順番が入れ替わったりしても対応できるようにしたいです。
どのように構築するのが効果的でしょうか。
Yoichi
(Yoichi)
2
こんにちは
データテーブルAをフィルターして、それをベースにデータテーブルBに追加する方向性が良いように思えます。
注文番号はユニークでしょうか?
ダミーでも良いので具体的な入力データと期待する出力を添付いただくとより良いかと思います。
Yoichi
(Yoichi)
3
単純には以下のような感じになると思います。
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 |
Yoichi
(Yoichi)
5
こんにちは
ご推察の通り列の型の問題かと思います。
残念ながら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の全体構造から見直してみます。
ありがとうございました。
system
(system)
Closed
7
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.