Aggregate 式 (集計式) で
Data Selector オブジェクトを使用することができます。
データセレクターは、次の文法に従って、USING 節で集計式の中で参照されます:
<AggFormulaName> (<Expression>, [ <AggregationCondition> ] , [ <DefaultValue> ] )
構文の表記規則の表示
入力値の説明:
AggFormulaName 次のうちのいずれかです: Find、Max、Min、Sum、Count、Average。
Expression 検索するか、最大値、最小値、合計、または平均を求めるエクスプレッションです。項目属性 (保存済みか数式)、または項目属性、変数、定数を使用するエクスプレッションを指定できます。
AggregationCondition [ <Condition> ] [
USING <DataSelector>
'(' <Parameters...>
')' ] という構造で指定します。
DefaultValue 集計条件に一致するレコードがない場合に返される値です。これは定数であり、オプションです。
注
- Count 式では、最初のパラメーターとしてエクスプレッションは使用できません。項目属性である必要があります。
- Sum および Count 式では、エクスプレッションの評価の結果は数値である必要があります。
- データセレクター (USING 節) を使用する場合:
- ユーザー変数は、インライン式でのみ使用できます。
次の
Transaction オブジェクトがあるとします:
Country
{
CountryId*
CountyName
}
Customer
{
CustomerId*
CustomerName
CustomerStatus
CountryId
CountyName
}
「ActiveCustomers」データセレクターの定義は次のとおりとします:
1) アクティブな顧客の総数を数えるには、イベントやソースで次のコードを定義できます:
&NumberActiveCustomers = Count(CustomerName, USING ActiveCustomers())
2) 国別にアクティブな顧客の数を数えるには、次のコードを定義できます:
For Each Country
&NumberActiveCustomers = Count(CustomerName, USING ActiveCustomers())
EndFor
GeneXus が
For Each の
ベーステーブルを判別する際、Count 式の最初のパラメーターである
CustomerName 項目属性は考慮しないという点に留意してください。
CustomerName 項目属性は式の定義に属します。
For Each のベーステーブルは COUNTRY です (
Country が
ベーストランザクションとして言及されているため)。
計算式で問い合わされるテーブルは、CUSTOMER です。これは、計算式とデータセレクターの定義にある項目属性が、CUSTOMER テーブルに属しているからです。
また、ナビゲートされる COUNTRY と CUSTOMER の 2 つのテーブルには、CountryId という共通の項目属性があります:
したがって、For Each コマンドで問い合わされるどの Country についても、For Each 内 (インライン) で定義した集計式は、
式がトリガーされた時点で For Each で問い合わされている Country に属するアクティブな Customer だけを計算の対象にします。
グリッドにおけるデータセレクター Data Provider における Data Selector For Each コマンドにおけるデータセレクター
Data Selectors