次のセクションでは、従業員フォームを使用する方法と、それをプログラムする方法を示します。 Northwind 2.0 Starter Edition データベースで簡単に調べることができるように、オブジェクト名が用意されています。
従業員リスト フォームの使用に関する重要な詳細を次に示します。
-
メイン メニューから左側のメニューから [従業員] を選択すると、右側のワークスペースに従業員 (sfrmMainMenu_EmployeeList) の一覧が表示されます。
-
各従業員の ID は、その従業員のレコードをポップアップ フォームで開いて詳細を編集するためのハイパーリンクです。
-
新しい従業員を追加するには、ヘッダー行の右端にある [ 従業員の追加 ] ボタンをクリックし、ポップアップ フォーム (sfrmEmployeeDetail_OrderList) で新しい従業員レコードを開き、詳細を追加します。
従業員詳細ポップアップ フォームの使用に関する重要な詳細を次に示します。
-
従業員詳細ポップアップ フォーム (frmEmployeeDetail) を使用すると、従業員レコードの編集と追加が可能になります。
-
すべての従業員には、名、姓、役職の 3 つのフィールドが必要です。
-
既定の Access エラー メッセージは、従業員レコードを保存する前に 1 つ以上が完了していない場合に警告します。 電子メール アドレスや電話番号など、他のフィールドには検証は適用されません。 ユーザーは、(000) 000-000 などの適切な書式設定を担当します。 タイトルのドロップダウン コントロールの既定のアクセス検証では、エントリが事前に選択された値の一覧に制限されます。 値フィールド コントロールの既定の Access 動作を使用して、新しいタイトルを再度追加できます。 フォームのドロップダウンを選択すると、編集アイコンが表示されます。
-
従業員の画像は、添付ファイル フィールドとしてテーブルに格納されます。 添付ファイル フィールドの既定の Access 動作を使用して、新しいイメージを追加するか、既存のイメージを変更します。
-
従業員が注文を作成した場合、従業員詳細ポップアップの右側にあるサブフォームに、データシート ビューでこれらの注文が一覧表示されます。
-
その従業員の既存の注文は、Orders サブフォーム (sfrmOrderDetails) でハイパーリンクされた Order ID # をクリックすることで編集できます。
従業員フォームでは、フォーム上のコントロールで VBA マクロと埋め込みマクロの両方を使用して、基本的なロジックを実行します。 2 つのスタンドアロン マクロと複数の埋め込みマクロが含まれています。
従業員一覧
-
Employee List フォーム (sfrmMainMenu_EmployeeList) は、単純なクエリ qryEmployeeList ( RecordSource プロパティから) からデータを取得します。 1 テーブル クエリでデータ入力フォームを基にすることをお勧めします。
-
従業員リスト フォームのコントロールは有効になっています。つまり、選択してロックできます。つまり、読み取り専用です。
-
複数値フィールドに基づく [タイトル] フィールドは、ドロップダウンまたはコンボ ボックスです。 その行ソースは値リストです。つまり、使用可能な省略可能な項目は、そのフィールド内に直接含まれます。 このフォームは編集を目的としていないため、 リストの [リストへの制限 ] プロパティが "はい" に設定されています。 複数値フィールドは、推奨事項としてではなく、機能の図としてのみ含まれます。
-
従業員リスト (sfrmMainMenu_EmployeeList) では、 Key Up イベントと Key Down イベントの 2 つの Sub プロシージャは、データシート ビューでのユーザーのカーソル移動に応答します。 カーソル移動の方向 (左、右、上、または下) を検出し、フォーカスを適切なコントロールに移動する VBA 関数を呼び出します。
-
既存の従業員レコードを編集し、詳細フォーム (frmEmployeeDetail) に新しいレコードを追加します。
-
次の 2 つの方法のいずれかで、編集可能なポップアップ フォームとして従業員一覧から従業員の詳細フォームを開くことができます。
-
ハイパーリンクとして表示されるように書式設定された EmployeeID を選択し、従業員の詳細フォームを開き、その従業員レコードのみにフィルター処理します。
-
フォーム ヘッダーの [従業員の追加] ラベルを選択して従業員の詳細フォームを開き、フォーカスを新しいレコードに移動します。 現在のすべてのレコードは、フォームのレコード ソースにあります。
この 2 つの方法は、パフォーマンスに異なる影響を与える可能性があることに注意してください。 フォームを 1 つのレコードにフィルター処理すると、テーブルから転送されるデータの量が最小限に抑えられます。 小さなレコードセットでは、違いが目立たない場合があります。
-
従業員の詳細
-
従業員詳細フォーム (frmEmployeeDetail) は、単純なクエリ qryEmployeeDetails (フォームの RecordSource プロパティから) からデータを取得します。 1 テーブル クエリでデータ入力フォームを基にすることをお勧めします。
-
qryEmployeeDetails の SELECT 句ではアスタリスク ワイルドカード文字 (*) を使用してテーブル内のすべてのフィールドを選択しますが、qryEmployeeList の SELECT 句には特定のフィールドが一覧表示されます。 ワイルドカード文字を使用すると、基になるテーブル内の新しいフィールドをクエリの追加編集なしで取得できます。 これは、特定のフィールドの一覧では使用できません。 特定のフィールドの一覧により、レコードセットは表示専用フォームで必要なフィールドのみに制限されます。 設計は、要件に適したアプローチを考慮する必要がありますが、優先順位は、ワイルドカード文字の使用である将来のメンテナンスを必要とする可能性が最も低いアプローチに進む必要があります。
-
従業員の詳細フォームのコントロールは有効であり、ロックされません。つまり、コントロールを選択したり編集したりできます。
-
複数値フィールドに基づく [タイトル] フィールドは、ドロップダウンまたはコンボ ボックスです。 その行ソースは値リストです。つまり、使用可能な省略可能な項目は、そのフィールド内に直接含まれます。 このフォームは編集を目的としているため、 リストには List への制限 プロパティが "いいえ" に設定されています。 タイトルの追加または編集には、組み込みの Access メソッドが使用されるため、コードは必要ありません。 複数値フィールドは、推奨事項としてではなく、機能の図としてのみ含まれます。
-
既存の従業員レコードと新しいレコードは、詳細フォームで編集できます。
-
次の 2 つの方法のいずれかで、編集可能なポップアップ フォームとして従業員一覧から従業員の詳細フォームを開くことができます。
-
ハイパーリンクとして表示されるように書式設定された EmployeeID を選択して、従業員の詳細フォームを開き、その従業員レコードのみにフィルター処理します。
-
フォーム ヘッダーの [従業員の追加] ラベルを選択して従業員の詳細フォームを開き、フォーカスを新しいレコードに移動します。 現在のすべてのレコードは、フォームのレコード ソースにあります。
-
-
フォームを 1 つのレコードにフィルター処理すると、テーブルからフォームに転送されるデータの量が最小限に抑えられます。 サンプル データなどの小さなレコードセットでは、違いが目立たない場合があります。
-
Personal Information の右側にあるサブフォーム コントロール (sfrmEmployeeDetail_OrderList) には、現在選択されている従業員の注文が表示されます (存在する場合)。 サブフォーム コントロールのサブフォームは、[ Orders ] セクションから再利用されます。 サブフォーム コントロールの組み込みの Access LinkMasterFields/LinkChildFields プロパティは、従業員ごとに表示されるレコードを同期およびフィルター処理します。
-
従業員の詳細 (frmEmployeeDetail) では、フォームの On Current Event と On Close イベント の 2 つの Sub プロシージャがこれらのイベントに応答します。
-
[現在の レコード] では、現在のレコードが既存のレコードであるか、または新しい従業員のレコードであるかに応じて、[ 従業員の追加] ラベルが表示または非表示になりますが、まだ保存されていません。
-
[閉じる] では 、2 つのメンテナンス アクションを実行します。 従業員詳細サブフォームの Recordset に再度クエリを実行して、詳細フォームで加えられた追加または変更を更新します。 このマクロを呼び出して、メイン メニューの従業員数の表示を再同期します。
-
マクロ
macMainMenu_UpdateSubs このマクロはスタンドアロンであり、従業員フォームを含む特定のイベントが発生したときに実行されます。 macMainMenu_UpdateSubs内では、サブマクロは適用される機能に従ってグループ化されます。 従業員の場合、サブマクロは従業員レコード数をメインメニューに表示されたカウントと同期します。
埋め込みマクロ 従業員フォームは、主にフォームに含まれる埋め込みマクロによって駆動され、フォームからのみ編集できます。 従業員一覧 (sfrmMainMenu_EmployeeList):
-
EmployeeID ハイパーリンク 従業員一覧フォームで EmployeeID をクリックすると、従業員詳細フォームが開き、選択した従業員レコードにフォーカスが設定されます。
-
従業員ラベルの追加 [従業員の 追加 ] ボタンをクリックすると、従業員詳細フォーム (frmEmployeeDetail) が開き、フォーカスが新しいレコードに設定されます。
-
従業員の詳細 ヘッダーの [ 従業員の追加] ボタンをクリックすると、現在のレコードが保存され、フォーカスが新しいレコードに設定されます。