バージョン

WinGrid での WinCalcManager による現在高の作成

始める前に

この詳細なガイドでは、WinGrid で現在高の列を作成します。現在高の列には、現在の行とそれより上の行の Item Total 列(これ自体は計算列です)の合計を表示します。現在の行より下の行は含めません。

この詳細なガイドは、 「WinGrid での計算された列の作成」の続きです。

以下の手順を実行します。

  1. アンバインド列をグリッドに追加します。WinGrid を右クリックして [UltraGrid デザイナ] を選択し、グリッド デザイナを起動します。WinGrid デザイナで、[バンドおよび列の設定] > [Band[0] - 'Order Details'] の順にノードを展開し、[列] を選択します。このノードを選択すると、中央のペインにこのバンド内の列を表示します。

WinCalcManager Using WinCalcManager to Create Running Totals in the WinGrid 01.png
  1. 下の [アンバウンド列の追加] ボタンをクリックして、新しい列をバンドに追加します。

WinCalcManager Using WinCalcManager to Create Running Totals in the WinGrid 02.png
  1. 列の Key を "RunningTotal"(現在高)に変更します。列の Header.Caption を "RunningTotal" に変更します。列の DataType を System.Decimal に変更します。見た目を整えるため、列の Format プロパティを c2 (通貨)に設定します。

WinCalcManager Using WinCalcManager to Create Running Totals in the WinGrid 03.png
  1. 現在高を表示する数式を列に設定します。

列の Formula プロパティで、省略(…​)ボタンをクリックしてフォーミュラ ビルダーを起動します。

現在高を効率的に計算するには、前の行の Running Total 列と現在の行の Item Total 列を加算します。そのためには、相対行を参照する必要があります。数式の中で、次のように相対行インデックスを指定します。

[ItemTotal] + [RunningTotal(-1)]

.

この数式は見た目はシンプルですが、実際には機能しません。その理由は、相対行の参照では行が存在しない場合にエラーが発生するためです。グリッドの 1 行目には前の兄弟行がないため、この数式では参照エラーが起こります。

この問題を回避するには、if 関数と iserror 関数を使用してエラーをチェックし、エラーがある場合は 0 を、エラーがない場合は前のセルの値を、それぞれ返すようにします。完成した数式は次のようになります。

[ItemTotal] +
if
(
	iserror ( [RunningTotal(-1)] ),
	0,
	[RunningTotal(-1)]
)

[OK] をクリックしてフォーミュラ ビルダーを閉じて、[適用] をクリックして WinGrid デザイナに行った変更を保存し、次に [OK] をクリックしてグリッド デザイナを閉じます。

  1. アプリケーションを実行して、現在高の列が正常に機能することを確認します。

WinCalcManager Using WinCalcManager to Create Running Totals in the WinGrid 05.png

まとめ

このトピックは、WinGrid の列で現在高の列を作成する方法を説明しました。