2016年4月18日月曜日

GeneXusジュニアアナリスト資格模試「超解説」問題12

問題[12] スポーツジムを対象としたGeneXusアプリケーションに関する問題です:

次のようなトランザクション設計があり、各種目について登録されているクラスを表示するリストを作成します。 関係するクラスの有無にかかわりなく、すべての種目が表示されるようにします。適切と思われる実装を選択してください



12.1



12.2


12.3







解答は??

【解答】12.2

【解説】
設問のポイントは「関係するクラスの有無にかかわりなく、すべての種目が表示されるようにします」です。以下、選択肢ごとに見ていきます。

12.1
1つのfor eachコマンドで全ての項目属性を指定しているので、ベーステーブル「Class」拡張テーブル「Class、Discipline」となり、全てのClassとClassに登録されているDisciplineのみが出力されます。要件を満たしていません。

12.2
2つのネストしたfor eachコマンドの記述で、外側のfor eachがDisciplineの項目属性、内側のfor eachがClassの項目属性のみが指定されています。結果、外側のfor eachのベーステーブルが「Discipline」、内側のfor eachのベーステーブルが「Class」となり、全てのDisciplineとDisciplineに関連するClassが出力されます。要件を満たしています。

12.3
2つのネストしたfor eachコマンドを使用しており、ベーステーブルは12.2と同じになります。但し、内側のfor eachでIf文を使ってDisciplineIdが同一かどうかの判定をしています。
2つのネストfor eachコマンドでそれぞれのベーステーブルが異なり、且つ、ベーステーブル同士が1対nのリレーションを持っている場合、GeneXusは自動的に(暗黙的に)内側のfor eachに対してキー項目でフィルタを指定します。(ここではDisciplineId) 従って、処理結果は要件を満たしていますが、If文による判定処理は無駄な記述となります。





0 件のコメント:

コメントを投稿