データテーブルの検索アクティビティのプロパティにあるルックアップ値欄で
複数条件の方法について知りたいです。
現在の状況
ルックアップ値には
datarow型変数(“列名A”).ToString を設定。
上記の値から検索対象のデータテーブルから条件に合った行番号を取得していた。
今回実現したいこと
新たに列名Bも検索条件に追加して
列名A and 列名Bで一致した行番号を取得したい。
試したこと
ルックアップ値に
datarow型変数(“列名A”).ToString And datarow型変数(“列名B”).ToStringを設定。
stringからLong型への暗黙変換出来ませんとエラーになります。
お手数お掛けしますが、ご教示いただけないでしょうか。
Yoichi
(Yoichi)
2
すでにdatarowがあるのであれば、元のDataTableをdtとすると
dt.Rows.IndexOf(datarow変数)
でインデックス(行番号)は取得できます。
今回実現したいこと
新たに列名Bも検索条件に追加して
列名A and 列名Bで一致した行番号を取得したい。
データテーブルを検索アクティビティでは難しいかと思います。
要件がわかりにくいですが、
すでにdatarowが特定できているのであれば上記と同じ式でIndexが取得できます。
datarowがわからずDataTableから検索する場合、DataTableをdt、列名Aで検索する値をstrA、列名Bで検索する値をstrBとすると
dt.Rows.IndexOf(dt.AsEnumerable.Where(Function(r) r("列名A").ToString=strA AndAlso r("列名B").ToString=strB).FirstOrDefault)
で取得できます。(対象がない場合は-1が返ります)
やりたいことの詳細としましては
①Excelにある表を読み込み→データテーブルA
②データテーブルAをデータテーブルの各行
③CurrentRowを別のdatarow A変数に引数設定
④datarow A変数を使ってデータテーブルを検索で別のマスタテーブルから
datarow A変数の列名Aと一致するマスタテーブルの行番号を取得←今までは
⑤マスターテーブルの行番号を新たにdatarowBに代入
⑥datarow AとdatarowBを行の更新アクティビティ使って元々用意していた
CSV出力項目用のデータテーブルBに書き込みする
上記が今までの処理でした。
そして今回やりたいことが④の検索条件を列名Aだけでなく列名Bも追加して
一致する行のマスタテーブルの行を取得したいです。
ただYoichiさんの内容から
データテーブルの検索では難しそうですね、、
Yoichi
(Yoichi)
4
こんにちは
ダミーでも良いので具体的なデータがあったほうが良いかと思いますが
上記からしますとJoinで解決する内容の様に思えます。
データテーブルを結合アクティビティでDataTableAに対してマスタテーブルを左結合すれば良いかと思います。
ご丁寧にありがとうございます。
データやワークフローをお見せできればいいのですが、
社内案件でお見せできず、ダミーも作ることが難しい状況です。
他の処理もあるため、datarow変数を使用して検索しないといけないのですが、、、
一度データテーブルを結合アクティビティを使用した運用が出来ないか検討してみます。