計算フィールドの値を SaveAs で出力する
方法
計算フィールドは PDF などイメージとして出力する場合を除き、SaveAs 関数では出力できません。 このため、データソースにダミーのカラム (計算カラム) を追加し、計算フィールドの結果をそのカラムへ格納して出力します。
下記の SELECT 文でデータウィンドウを作成します。
SELECT Name, Salary, Bonus FROM Employee
作成されたデータウィンドウは下記ようなレイアウトになります。 Name、Salary、Bonus にそれぞれ「氏名」、「基本給料」、「ボーナス」とラベルを付けています。
氏名 | 基本給料 | ボーナス |
佐藤 | 300,000 | 50,000 |
加藤 | 450,000 | 60,000 |
伊藤 | 480,000 | 65,000 |
このデータウィンドウに計算フィールド (cf_total_salary) を追加し、「給料合計」として Salary と Bonus の合計を表示します。
氏名 | 基本給料 | ボーナス | 給料合計(計算フィールド) |
佐藤 | 300,000 | 50,000 | 350,000 |
加藤 | 450,000 | 60,000 | 510,000 |
伊藤 | 480,000 | 65,000 | 545,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