最近のアクセス:
Find 式

Find は Aggregate 式の 1 つです。

構文

Find ( <aggregateExpression>, <aggregateCondition>, <defaultValue>) [  if <triggeringCondition>  ] ;
入力値の説明:
<aggregateExpression>:
<aggregateCondition> に一致する最初のレコードに基づいて結果の値を返すエクスプレッションです。項目属性 (計算式の項目属性でもかまいません)、定数、変数を含めることができます (ユーザー変数はインライン式だけで使用できます)。
<aggregateCondition>:
検索条件と Data Selector の呼び出しを組み合わせたものです。検索条件および Data Selector はオプションです:
[ <SearchCondition> ] [ USING <DataSelector> '(<パラメーター>1, <パラメーター>2, <パラメーター>n ')' ]
<SearchCondition>
レコードを総計に含める場合、このレコードが満たす必要のある条件です。項目属性、定数、変数を含めることができます (ユーザー変数はインライン式のみ、GeneXus の標準変数はグローバル式とインライン式のみで使用できます)。 
<defaultValue>
<aggregateCondition> に一致するレコードがない場合に返される値です。これはオプションであり、定数値のみが許容されます (式が日付の項目属性とともに使用されている場合は、この記事も参照)。
<triggeringCondition>
式をトリガーする必要があるかどうかを判別する条件です。これはオプションです。使用できるのは、コンテキストテーブルに属する項目属性 (格納された場合に式項目属性が属するもの) とその拡張項目属性だけです。

Flight
{
    FlightId*
    FlightDescription
    Price
    {
        FlightDate*
        FlightPrice
    }
}

FlightInstance
{
    FlightInstanceNumber*
    FlightId
    FlightDescription
    FlightInstanceDate
    FlightInstancePrice
    FlightInstanceCurrencyValue = Find(CurrencyValue, CurrencyId = "Dollar" and CurrencyDate = FlightInstanceDate, 0) if FlightId=1;
}

Currency
{
    CurrencyId*
    Value
    {
         CurrencyDate*
         CurrencyValue
    }
}
上の例では、グローバル式である Find を定義しています。
次の画像は編集中の FlightInstance トランザクション (GeneXus トランザクションエディター使用) および FlightInstanceCurrencyValue グローバル式項目属性 (GeneXus 式エディター使用) を示しています:
イメージ:5877.jpg
FLIGHTINSTANCE は、グローバル式の FlightInstanceCurrencyValue 項目属性のコンテキストテーブルです。
CURRENCYVALUE は、この計算を行うために Find 式がナビゲートするテーブルです。
Find 計算は、FlightId = 1 の場合にのみトリガーされます。
式の定義にあるテーブルには共通の項目属性が格納されないので、別のフィルタが自動的に適用されることはありません (定義済みの <aggregateCondition> だけに基づいてレコードが検索されます)。このように、<aggregateCondition> を満たす CURRENCYVALUE テーブルで見つけられた最初のレコードを選択し、対応する定義済みエクスプレッションを返します (この例では、式は CurrencyValue を返します)。
この例では、定義済みの <aggregateCondition> はナビゲートされたテーブルの主キーによるフィルタを含んでおり、このため、ナビゲートされたテーブルは <aggregateCondition> を満たす一意のレコードを含みます。これは、Find 式の最も一般的な使い方です。つまり、通常は Find 式を定義して、(一意のレコードが <aggregateCondition> を満たすように) ナビゲートするテーブルの主キーでフィルタリングして、特定の値を検索します。従属項目属性 (外部キーの項目属性) でフィルタリングする場合は、多数のレコードが <aggregateCondition> を満たす可能性があるので、<aggregateCondition> を満たす最初のレコードが選択されます。











サブページ
Created: 14/09/18 03:19 by Admin Last update: 22/04/05 18:20 by Admin
カテゴリ
Powered by GXwiki 3.0