最近のアクセス:
集計における Data Selector

Aggregate 式 (集計式) で Data Selector オブジェクトを使用することができます。

構文

Data Selector は、次の文法に従って、USING 節で集計式の中で参照されます:
<集計式の名前> (<エクスプレッション>,  [ <集計条件> ] ,  [ <既定値> ] )
構文の表記規則の表示
入力値の説明:
集計式の名前
     次のうちのいずれかです: Find、Max、Min、Sum、Count、Average。
エクスプレッション
     検索するか、最大値、最小値、合計、または平均を求めるエクスプレッションです。項目属性 (保存済みか数式)、または項目属性、変数、定数を使用するエクスプレッションを指定できます。
集計条件
      [ <条件> ] [ USING <DataSelector> '(' <パラメーター...> ')' ] という構造で指定します。
既定値
     集計条件に一致するレコードがない場合に返される値です。これは定数であり、オプションです。

  • Count 式では、最初のパラメーターとしてエクスプレッションは使用できません。項目属性である必要があります。
  • Sum および Count 式では、エクスプレッションの評価の結果は数値である必要があります。
  • Data Selector (USING 節) を使用する場合、式の定義の中でプロシージャーの使用はサポートされません。そうでない場合は、spc0026 が詳述され、式は解決されません。
  • ユーザー変数は、インライン式でのみ使用できます。

次の Transaction オブジェクトがあるとします:
Country
{
  CountryId*
  CountyName
}

Customer
{
  CustomerId*
  CustomerName
  CustomerStatus
  CountryId
  CountyName
}
「ActiveCustomers」データセレクターの定義は次のとおりとします:
イメージ:54801.jpg
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 に属するアクティブな顧客のみを計算の対象にします。

参考情報

グリッドにおける Data Selector
Data Provider における Data Selector
For Each コマンドにおける Data Selector
Web パネルにおける Data Selector
Work With の List ノード
スマートデバイスにおけるリストのためのフィルタとしての Entry パネル

動画

イメージ:20668.png Data Selectors





サブページ
Created: 14/09/18 03:17 by Admin Last update: 24/03/25 23:57 by Admin
カテゴリ
Powered by GXwiki 3.0