プロンプトに関するあれこれ - その3

今回はプロンプトの仕様についてです

プロンプトの目的はキー項目の入力補助です。従ってプロンプトから返されるのはキー項目の値のみです。外部キー項目に従属する参照項目はプロンプトからは返されません。
参照項目はトランザクション画面に制御が移り、キー項目からフォーカス移動したタイミングにDBからデータを取得・表示します(外部キー項目を手入力した時と同じ動作)。

Country(国)プロンプトを閉じた直後
フォーカスは外部キー項目である国番号にあり、
プロンプトから返された値がセットされている
参照項目である国名にはまだデータが表示されていない


フォーカスが国番号から移動した後
国マスタ(Country)を検索し参照項目(国名)を取得・表示している



プロンプトから値を受け取る項目属性は画面上で入力可能にしている必要があります。
下記の例は故意に国番号(CountryId)を入力不可にしています。

NoAcceptルールで国番号(CountryId)を不活性にします

ナビゲーションレポートでは、CountryIdが不活性=リードオンリーになり、
PromptsセクションではCountryIdに対するプロンプトが除外されています

実行時には国番号にはプロンプトアイコンが表示されません





パラメータの定義について
基本はプロンプトオブジェクト側のParmルールはOUTパラメータになります。

国マスタ選択用プロンプトでは、CountryIdはoutパラメータとして定義されている



例外として、外部キー項目が複合キーで且つ親子関係がある場合、親側の外部キー項目はINパラメータになります。
例として、国マスタ(Country)→都市マスタ(City)→顧客マスタ(Customer)と1対nリレーションがあるモデルを挙げます。

データモデル
都市マスタ(City)は主キーの一部が外部キーで国マスタ(Country)と親子関係

国マスタ、都市マスタが外部キー項目として定義されている顧客マスタ(Customer)

Customerトランザクションから呼び出される都市マスタ選択用プロンプトはINパラメータ、OUTパラメータの両方が定義されています。

都市マスタ(City)選択用プロンプト

国番号(CountryId)はINパラメータ、都市番号(CityId)はOUTパラメータ


Customerトランザクションのナビゲーションレポート
都市一覧(City)プロンプトに対するパラメータは
CountryIdがINで、CityIdがOUTになっている

実行時の挙動は以下の通り

国番号(CountryId)のプロンプトアイコンを
クリックして国一覧プロンプトを表示

国一覧プロンプトで「1:日本」を選択し、
顧客(Customer)トランザクションに国番号が戻さたところ

都市番号(CityId)のプロンプトアイコンをクリックして
都市一覧プロンプトを表示したところ
国番号(CountryId)=1が引き継がれているため
都市一覧には「1:日本」の都市のみが表示されている




コメント

このブログの人気の投稿

データプロバイダーを使いこなそう - 応用編その4 スケジューラー 補足編

HTMLヘッダーにあれこれ直接追加したいとき

GeneXusにおけるWebアプリケーションセキュリティ対策 - OWASP 2010 Top10 Security Risks in GeneXus Applications