ページの作成ウィザードで生成された「Team Member」レポートをチーム・メンバーに便利なディレクトリに開発し、「Team Member」フォームを開発してユーザーがより簡単に「Team Member」データを編集できるようにします。
このレッスンについて
これまでに、アプリケーションの作成ウィザードを使用して、DEMO_TEAM_MEMBERS
表のレポートとフォームを生成しました。
このレッスンでは、ページ・デザイナを使用して一般的なページの組み合せ、レポートとフォームを開発します。レポートはSQL問合せの書式設定された結果で、フォームはレポートと対になるページで、レポートが問い合せる表をユーザーが更新できるようにします。(通常、フォームは親レポート・ページの子ページです。)どちらのページもDEMO_TEAM_MEMBERS
表を問い合せます。
「Team Members」レポートはユーザーの連絡先情報のリポジトリとして使用されますが、「Team Members」フォームは、ユーザーが開いて「Team Members」レポートの情報を更新できる、別のページです。
レポート・ページを開発するには、SQL問合せで問い合せられた列のリストを更新し、ランタイムに表示された列の一部を削除して、ページの下部を移動してそのテキストを編集することによって主レポートを更新します。
アプリケーションの作成ウィザードでレポートとフォームが作成されると、デフォルトでフォームはランタイムにモーダル・ダイアログとして表示されます。モーダル・ダイアログは、同じブラウザ・ウィンドウ内に表示されるオーバーレイ・ウィンドウです。それはユーザーが終了して閉じるまで、アクティブでフォーカスされたままです。
フォーム・ページでは、ページの作成ウィザードのデフォルトから、一部のフィールドへの必須条件の追加など、フィールドの外観と機能を更新し、いくつかの「表示のみ」アイテムを構成します。また、ユーザーが必要に応じて展開し、あまり使用されない情報を参照できるサブ・リージョンを追加します。
ここから開始:
Basic Projects App Export - Topic 4.sql前のレッスンを完了していない場合、付録「作業領域へのアプリケーションのインストール」を使用して上述のSQLスクリプトを作業領域にインポートし、このレッスンから先に学習を続けられます。このスクリプトは、このチュートリアル付属の.zipファイルを解凍した場所の/filesサブディレクトリにあります。
Oracle Application Expressの対話モード・レポートでは、エンド・ユーザーが必要に合せてデータを操作でき、アプリケーション開発者に多数のレポートを定義してもらう必要がありません。エンド・ユーザーが表示されるデータとその表示方法を操作できるようにするには、基礎になるOracle Database表からデータをすべて取得するSQL文を定義する必要があります。
ページ・デザイナのコード・エディタを使用して、対話モード・レポートのDEMO_TEAM_MEMBERS表の列を問い合せるSQLを編集します。これにより、ユーザーが他のユーザーのタスクの表示や自分のワークフローの更新などの操作ができるようになります。
ページ・デザイナで「Team Members」対話モード・レポートを編集するには次のステップを実行します。
対話モード・レポートのSQL文は上述のすべての列を問い合せないと機能しませんが、対話モード・レポートにそれらをすべて表示するとユーザーに迷惑です。ID
、CREATED
およびCREATED_BY
などの列は、主にエンド・ユーザーでなく開発者に情報を伝えるために存在します。
ランタイムで「アクション」メニューを使用して対話モード・レポートの主レポートを構成し、エンド・ユーザーがどの列にアクセスできるかを変更します。
対話モード・レポートに表示する列を変更するには、次のステップを実行します。
表のデフォルトの順序を「フルネーム」列のアルファベット順に構成して、レポートの操作性を向上させることもできます。
「フルネーム」を基準に行の順序をソートするには、次のステップを実行します。
最後に、レポートを保存してこれらの変更を対話モード・レポートの主レポートに維持する必要があります(他のレポート・タイプにはプライベート、代替およびパブリックがあります)。
すべてのユーザーがプライベート・レポートを保存できますが、主レポートを保存できるのは開発者のみです。主レポートは、最初に表示されるレポートです。他のユーザーが主レポートの名前を変更したり削除したりすることはできません。
現在の設定をデフォルトで保存するには、次のステップを実行します。
ページの作成ウィザードは対話モード・レポートに自動的に「CREATE」ボタンを追加して、エンド・ユーザーが新しいメンバーをすぐに表に追加できるようにしていますが、ボタンを別の場所に配置しなおす方が適切な場合があります。
ページ・デザイナのコンテキスト・メニューを使用して、「CREATE」ボタンを「ブレッドクラム」リージョンに移動します。
ヒント:
ドラッグ・アンド・ドロップで「レイアウト」にアイテムを移動することもできます。
ヒント:
前のアクションを元に戻すには、「元に戻す」ボタンをクリックします。
コンテキスト・メニューを使用して異なるリージョンにボタンを移動するには、次のステップを実行します。
これで「作成」ボタンを移動できました。
Team Membersのレポートとフォームのレポート部分が完成しました。次に、「Team Members」フォームを開発します。
次に、「Team Members」レポート・ページに、「Maintain Team Member」フォームを開発します。
「Maintain Team Member」フォームはモーダル・ダイアログです。モーダル・ダイアログは、ページ・デザイナでは別のページとみなされます。動作はページ内ページのようですが、複雑度は同等だからです。
まずページ・デザイナでフォームに移動し、フォームの「テンプレート・オプション」でフィールド幅を構成して、フォームが見やすく、統一的に見えるようにします。
リージョン内のすべてのフィールドの幅を広げるには、次のステップを実行します。
DEMO_TEAM_MEMBERS
表の列に基づくフィールドを使用して、このページに自動的にデータを移入しました。技術的にはフィールドはすべて機能していて正しく表示されていますが、次のようにインタフェースを変更するとユーザーに有益です。ユーザー名など、特定のフィールドのユーザーによる入力を必須にする。これは一般的で適切な方法です。NOT NULL制約は、NULL値を受け入れないように列に強制します。これは常に値を含むようにフィールドに強制します。新しいレコードを挿入したり、このフィールドに値を追加しないでレコードを更新したりできないことを意味します。
ユーザーによる情報入力を奨励するには、「プロファイル」フィールドのサイズを増やします。このフィールドは、ロールとチームの任務の説明として役立ちます。
写真BLOBのラベルを変更します。
見やすくするために、不必要なフィールドをビューから非表示にします。
「ユーザー名」と「フルネーム」フィールドを必須に変更してユーザーが空白のままにすることができないようにします。
「プロファイル」フィールドはユーザーが個人情報を入力するところなので、複数のテキスト行の表示をサポートする必要があります。それをテキスト領域に変換するには次のステップを実行します。
「Photo Blob」フィールドのラベルを変更するには、次のステップを実行します。
ユーザーがプロファイルを更新するときに、いくつかのフィールドはまったく不必要です。
フィールドをビューから非表示にするには、次のステップを実行します。
一部の詳細(タイムスタンプなど)は便利ですが、ほとんどの時間、ユーザーが参照する必要はありません。それらを「Audit Details」サブ・リージョンにグループ化し、将来の使用に備えて維持しつつフォームのスペースを節約することができます。
折りたためるサブ・リージョンを作成するには、次のステップを実行します。
プロパティ・エディタで、監査列を「Audit Details」サブ・リージョンに移動します。
ユーザーが監査列の情報を参照するのは許容できますが、このシステム生成データを直接変更する権限は決して持たせてはいけません。「表示のみ」にすることで、ユーザーがこれらのアイテムを編集するのを制限できます。
セキュリティ目的のために、この情報がランタイムで制限されていることを確認することも必要です。
リージョンの監査列へのユーザーのアクセスを制限するために「表示のみ」にするには、次のステップを実行します。
ページ・デザイナでモーダル・ダイアログを編集している場合、保存と実行のボタンは変更を保存するのみで、新しいブラウザ・ウィンドウのページには移動しません。ランタイムの親ページでモーダル・ダイアログを開く必要があります。
ランタイムでモーダル・ダイアログを表示するには、次のステップを実行します。
これで「Team Members」ページのレポートとフォームの更新を完了しました。
このレッスンでは、対話モード・レポートと、そのSQL問合せと主レポートを編集する方法、「ブレッドクラム」リージョンにボタンを移動する方法、モーダル・ダイアログのフィールドのデフォルト設定からの更新、および「表示のみ」アイテムを持つサブ・リージョンの作成について学習しました。
次のレッスンに進みます。