最近のアクセス:
データプロバイダーのグループステートメント

これは、データプロバイダーの出力ベースの宣言型言語の 3 つの主要なコンポーネントのうちの 1 つです。
下位のエレメントまたはほかのグループのセットを並べ替えます。コレクションも、コレクション以外も対象です。GeneXus では、グループが反復グループかどうかを識別します。反復グループの場合、グループの動作は For Each と似ており、多くの節を使用できます。

構文

<GroupName>
   [ <GroupProperties> ]        
   [ From <BaseTrn1>|<BaseTrn.Level1>,...,<BaseTrnN>|<BaseTrn.LevelN> ] 
   [ <Order1>,...,<OrderN> ] 
   [ unique <Att1>,...,<AttN> ] ...
   [ using <DataSelectorName>( [ <parm1>,...,<parmN> ] ) ] ...
   [ <Input> ] 
   [ <Condition1>,...,<ConditionN> ] 
  '{'
  <variableStatement> | <elementStatement> | <subgroupElementInsertion> | <groupStatement>...
  '}'
構文の表記規則の表示
入力値の説明:
GroupName
           出力内のグループ名で、出力 SDT または BC のエレメント名です。
GroupProperties
          出力をより適切に制御できるように設計されています。次のいずれかの値を指定できます: DefaultNoOutputOutputIfDetailPaging、または One
BaseTrn1|BaseTrn.Level1, ..., BaseTrnN|BaseTrn.LevelN
           ナビゲートするベーステーブルとして使用するトランザクションまたはトランザクションレベルの名前です。複数をコンマで区切ることもできます。詳細については、「ベーストランザクション節」を参照してください。
Order1,...,OrderN
         クエリの結果が返される順番を指定することができます。構文に示すように、複数の条件付き Order 節を記述できます。
unique
      参照される項目属性の値セットが一意であるレコードのみを返します。
Att1,...,AttN
         コンマ区切りによる項目属性のリストです。
using
      DataSelectorName を指定して、データセレクターで決められている条件のセットに従って並べ替えとフィルタリングを行います。 
DataSelectorName
     Data Selector オブジェクトの名前です。
parm1, …, parmN
     変数 (呼び先オブジェクトで定義) または項目属性です。
Input   
         コレクション、配列、行列の変数をスキャンすることで、データベース以外のソースから取得した各アイテムの値を使用してグループの本文で処理を行う必要がある場合。<for キーワードなしの反復実行><for キーワードなしの Input> の構文、および詳細情報については、「Input 節」を参照してください。
Condition1,...,ConditionN
         データの取り出しに条件を付ける有効な論理エクスプレッションを指定します。「and」、「or」、「not」の論理演算子を使用した複合条件にすることもできます。
variableStatement
         内部の計算に使用できる、ローカルで宣言された変数です。
elementStatement
         
エレメントはデータプロバイダーの出力におけるアトミックな値であり、SDT データタイプを持つ場合もあります。 
subgroupElementInsertion
        次のように定義できます: <SubGroupName>.Insert(  [ <parm1>, <parm2>, ... ] )。
        ここで <SubGroupName> は、データプロバイダーのサブグループステートメントによってサブグループとして宣言する必要があります。
注: 以前のバージョンの GeneXus の Defined By 節 (構文で Condition1,...,ConditionN の後に配置) は、記述することはできますが、ベーストランザクション節に対して意味がなくなります。

次の Transaction オブジェクトがあるとします:
Customer
{
   CustomerId
   CustomerName
   CustomerAddress
   CustomerPhone
   CustomerEmail
   CustomerBalance
}
また、次の Structured Data Type (SDT) オブジェクトがあるとします:
イメージ:55433.png
以下のデータプロバイダーは、Customer ベーステーブルを、CustomerBalance > 1000 の顧客をフィルタリングしてナビゲートします。条件を満たす顧客のコレクションをロードして返します:
SDTCustomers From Customer
where CustomerBalance > 1000
{
    SDTCustomersItem        
   {
         Code = CustomerId
         Name = CustomerName
   }
}
以下に別のコード例を示します:
SDTCustomers From Customer order CustomerName unique CustomerName
using DataSelector1()
{
    SDTCustomersItem    
    {
        Id = CustomerId
        Name = CustomerName
    }
}

注:
  • Order 節および Where 節は入力項目属性にのみ適用され、SDT エレメントには適用されません。次に例を示します: 「Order CustomerName」は有効ですが、「Order Name」は有効ではありません。事実、Order はデータベースにアクセスします。
  • 動作は For each コマンドと同じです。つまり、ベーステーブルを特定する方法が同じで、Order 節と Where 節で条件も指定できます。また、Where 節の USING <データセレクター> 節と IN 演算子の動作も同じです。したがって、For each と同じ構文と同じ方法で、データセレクターをデータプロバイダーのグループでも使えます。「Data Provider における Data Selector の例」を参照してください。


サブページ
Created: 15/01/07 22:50 by Admin Last update: 24/03/25 23:57 by Admin
カテゴリ
Powered by GXwiki 3.0