テーブルの列の値をカンマ区切りで1行に表示する方法
テーブルのある列の値をカンマ区切りで1行にまとめて表示したいと思っています。
- 例えば、以下のようなテーブルがあるとします:
顧客コードの値を
変数cに「1,2,3,4」のように1行で表示したいです。
(メールのCCリストに流用する予定です)
ご存じの方がいれば、教えて頂けると助かります。
-
iwasakiさん、
サブタスクでバッチを回して、変数にデータをアペンド(&コマンド)していけばいいと思いますよ。
-
Tandaさん
アドバイスありがとうございます。
下記のようなロジックを記述してみました。
while LoopCounter()<=DbRecs('1'DSOURCE,'')
項目更新 変数C 変数C&','&項目A
項目Aの値を1行目、2行目、、、と順番に代入するには、どのようにすれば良いでしょうか?
見当違いでしたら申し訳ありませんが、アドバイスいただけると助かります。
-
こんにちはPuです
普通にバッチtaskで レコード後処理
項目更新 変数C 変数C&','&項目A
(ただし1件目は 変数Cのみ ','は不要)(counter=1の時)
while LoopCounter()<=DbRecs('1'DSOURCE,'') はいらないです
でわ~でわ~ -
Puさん
アドバイスありがとうございます。
無事にうまくできました!
ご助言、ありがとうございました!
-
iwasakiさん、
はい、Puさんのコメントの通りです。
補足事項としては、Trim() 関数で必要に応じてデータをTrimしていかないと、うまくアペンドできない場合がありますので、そこだけ注意ですね。うまく動いたようですので問題ないかと思いますが。
-
tandaさん
補足ありがとうございます!
以下のようにしていたと思います
項目更新 変数C trim(str(項目A,'10') 条件counter(0)=1
項目更新 変数C trim(変数C)&','&trim(str(項目A,'10') 条件counter(0)<>1ありがとうございました!
-
iwasakiさん、
1件目のレコードかどうかを判定するのに、次のような関数も用意されています。これも併せて覚えておくと便利ですよ。
IsFirstRecordCycle()
(ヘルプより抜粋)
●最初のレコード処理の確認
タスク内の最初のレコードサイクルかどうかを確認します。この内容は、[タスク前]の後にフェッチされたデータの内容を処理したり、タスクに入って一回だけ実行する処理がある場合の判定に使用できます。 -
tandaさん
IsFirstRecordCycle()を使った方が、わかりやすいですね
場合によって、使い分けられるようにしていきます教えていただき、助かりました!
サインインしてコメントを残してください。
コメント
8件のコメント