2016年5月9日月曜日

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

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

次のようなトランザクション設計があり、すべてのスイミング(DisciplineId=4)のクラス一覧を表示するために、ベーステーブルのない Webパネルを設計します。


適切と思われる実装を選択してください。





22.1



22.2.



22.3




解答は??
【解答】22.1

【解説】ベーステーブル無しのWebパネルを実装する場合、自動的にデータベース問い合わせ(クエリー)は実行されないためLoadイベント内で明示的にFor eachコマンドを記述する必要があります。(呼び出されるLoadイベントは1回のみ)

22.2はFor eachコマンドの記述がないのでクエリーは動作しません。正確に言うと、イベントコードにてfor eachない状態で項目属性を記述しているのでベーステーブルありのWebパネルになってしまいますが、グリッド上に項目属性が1つも無いためデータは表示されません。
グリッド上に項目属性を指定したベーステーブルありの場合は動作します。

抽出条件(DisciplineId = 4)はIF文ではなくConditionに記述したほうがパフォーマンス的に有利です。(IF文による条件判定はSQLではなくプログラム側のロジックとして生成されます)

22.3はStartイベントにFor eachコマンドを記述しているため、Loadコマンドでグリッドにデータをロードしようとしても正しく動作しません。




0 件のコメント:

コメントを投稿