計算フィールドの値を SaveAs で出力する

PowerBuilder Tips

方法

計算フィールドは PDF などイメージとして出力する場合を除き、SaveAs 関数では出力できません。 このため、データソースにダミーのカラム (計算カラム) を追加し、計算フィールドの結果をそのカラムへ格納して出力します。

下記の SELECT 文でデータウィンドウを作成します。

SELECT Name, Salary, Bonus FROM Employee

作成されたデータウィンドウは下記ようなレイアウトになります。 Name、Salary、Bonus にそれぞれ「氏名」、「基本給料」、「ボーナス」とラベルを付けています。

氏名基本給料ボーナス
佐藤300,00050,000
加藤450,00060,000
伊藤480,00065,000

このデータウィンドウに計算フィールド (cf_total_salary) を追加し、「給料合計」として Salary と Bonus の合計を表示します。

氏名基本給料ボーナス給料合計(計算フィールド)
佐藤300,00050,000350,000
加藤450,00060,000510,000
伊藤480,00065,000545,000

このまま SaveAs 関数を呼び出した場合は計算フィールドの内容は出力されず、データウィンドウSELECT文で抽出されたカラムのみが出力されます。

SaveAs で計算フィールドの値を出力するには、データソースの SELECT 句にダミーの計算カラムを追加します。 数値型の計算カラムをデータウィンドウに追加する場合は、数値を追加します。

SELECT Name, Salary, Bonus, 0 FROM Employee

上記のSELECT文でデータウィンドウを再作成することにより数値型のカラム (compute_0001) が追加され、このカラムに計算フィールドの計算結果を格納します。 データウィンドウ上に表示したくない場合は、データウィンドウからカラムコントロールを削除します。

計算カラムへの値の設定はスクリプトで行います。 計算フィールドからは GetItemNumber 関数 (数値の場合) で値を取得し、SetItem 関数で計算カラムに設定します。 下記の例は RetrieveEnd イベントに、追加したカラムへ計算フィールドの結果を設定する処理を記述し、検索直後に計算値が設定される動作を実装したものです。

【例】

[データウィンドウ RetrieveEnd イベント]

long ll_count, ll_computed_field_value

FOR ll_count = 1 TO rowcount
    // 計算フィールド "cf_total_salary" の値を取得
    ll_computed_field_value = this.GetItemNumber(ll_count, "cf_total_salary")

    // 取得した値を、計算カラム "computed_0001" に設定
    this.SetItem(ll_count, "compute_0001", ll_computed_field_value)
NEXT

 

Tips情報

プロダクト :PowerBuilder

バージョン :2017R3

Tips 一覧を見る
PowerBuilder マイグレーション
PowerBuilderとは? ~デキる大人へ変身できる?ローコード開発ツール~