メインコンテンツへスキップ

テーブルの列の値をカンマ区切りで1行に表示する方法

コメント

8件のコメント

  • Tanda

    iwasakiさん、

    サブタスクでバッチを回して、変数にデータをアペンド(&コマンド)していけばいいと思いますよ。

  • iwasaki

    Tandaさん

    アドバイスありがとうございます。

    下記のようなロジックを記述してみました。

    while  LoopCounter()<=DbRecs('1'DSOURCE,'')    

    項目更新 変数C 変数C&','&項目A

     

    項目Aの値を1行目、2行目、、、と順番に代入するには、どのようにすれば良いでしょうか?

    見当違いでしたら申し訳ありませんが、アドバイスいただけると助かります。

     

  • Pu

    こんにちはPuです
    普通にバッチtaskで レコード後処理
    項目更新 変数C 変数C&','&項目A
    (ただし1件目は  変数Cのみ ','は不要)(counter=1の時)
    while  LoopCounter()<=DbRecs('1'DSOURCE,'') はいらないです
    でわ~でわ~

  • iwasaki

    Puさん

    アドバイスありがとうございます。

    無事にうまくできました!

    ご助言、ありがとうございました!

  • Tanda

    iwasakiさん、

    はい、Puさんのコメントの通りです。

    補足事項としては、Trim() 関数で必要に応じてデータをTrimしていかないと、うまくアペンドできない場合がありますので、そこだけ注意ですね。うまく動いたようですので問題ないかと思いますが。

  • iwasaki

    tandaさん

    補足ありがとうございます!

    以下のようにしていたと思います

    項目更新 変数C trim(str(項目A,'10') 条件counter(0)=1
    項目更新 変数C trim(変数C)&','&trim(str(項目A,'10') 条件counter(0)<>1

     

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

  • Tanda

    iwasakiさん、

    1件目のレコードかどうかを判定するのに、次のような関数も用意されています。これも併せて覚えておくと便利ですよ。

    IsFirstRecordCycle()

    (ヘルプより抜粋)

    ●最初のレコード処理の確認
    タスク内の最初のレコードサイクルかどうかを確認します。この内容は、[タスク前]の後にフェッチされたデータの内容を処理したり、タスクに入って一回だけ実行する処理がある場合の判定に使用できます。

  • iwasaki

    tandaさん
    IsFirstRecordCycle()を使った方が、わかりやすいですね
    場合によって、使い分けられるようにしていきます

    教えていただき、助かりました!

サインインしてコメントを残してください。