Northwind Developer Edition での会社の管理については、以下のトピックを選択してください。
注: このページは、Access Developer Showcase Edition で参照されています
Northwind Starter Edition では、 顧客 が唯一の会社の種類です。 Developer Edition では、 顧客、 荷送人、ベンダーを含むように拡張 しました。
また、製品を拡張し、1 つの 製品に複数のベンダーを含めます。
各会社の種類は、顧客、 荷送人、 仕入先のいずれか 1 つだけです。 会社の種類を変更できる場合のビジネス ケースについては、この記事の 「frmCompanyDetail 」セクションを参照してください。
'
会社の種類と使用場所
-
注文の顧客
-
注文の荷送人
-
購買発注の仕入先
-
製品のベンダー
さらに、Northwind Developer バージョンの 企業 は複数の 連絡先を持つことができます。
'
リボン内の企業
リボンから [会社] を選択すると、 frmCompanyList に Northwind の会社が表示されます。
会社一覧 - frmCompanyList
Northwind 開発者バージョンでは、 frmCompanyList は分割フォームです。 分割フォームでは、フォーム ビューと データシート ビューの 2 つのビューが同時 に表示されます。 ヘッダーとフッターもあります。 この実装では、フォーム ビューは表示されません。 フォーム ビューを表示しないことで、ヘッダーとフッターを含むデータシートが作成されます。
これを実現する方法を次に示します。
frmCompanyList では、ヘッダーとデータシートの間のスプリッター バーは表示されません。 フォーム プロパティ Split Form Splitter Bar は [いいえ] に設定されているため、フォーム ビューは非表示になります。
分割フォームとデータシート フォームは、Excel ワークシートに似ています。 フィルター処理と並べ替えがサポートされており、フィールドまたは列の表示、非表示、移動を行うことができます。 また、列を合計することもできます。
分割フォームのヘッダーセクションとフッターセクションを使用すると、コマンドボタン、画像、テキスト(ラベル)、およびユーザーのエクスペリエンスを向上させるその他のアクセスフォームコントロールを使用できます。 フォームと分割フォームの詳細については、こちらを参照してください。 データシートには、ヘッダーセクションとフッターセクションは表示されません。
詳細については、「フォームの概要」と「 分割フォームの作成」を参照してください。
'
会社一覧フォームでは、次の 5 つのアクションがサポートされています。
-
カスタムの事前構築済みフィルター、オンデマンド フィルター、またはその両方を適用する
-
フィールドの表示/非表示
-
ラベルの作成
-
フィルターの表示
-
新しい会社を追加する
詳細行の任意の場所をダブルクリックして、(他のフォームのように ID だけでなく) 会社の詳細 フォームを開きます。
'
事前構築済みフィルターとオンデマンド フィルター
frmCompanyList フォームには、Northwind の会社をフィルター処理する機会が豊富です。 画面の上部で、次のラジオ ボタンを使用してフィルター処理できます。
-
すべての会社 (既定値)
-
顧客のみ
-
荷送人のみ
-
ベンダーのみ
さらに、データシートの組み込みのオンデマンド フィルター オプションも利用できます。 会社一覧フォーム (事前構築済みまたはオンデマンド) に適用されたフィルターは、開くと frmCompanyDetail に渡され、適用されます。
フォーム間でフィルターを渡すには、最初にフォームのフィルター文字列をクレンジングして、フィールド名のみを含める必要があります。 これを行う方法の詳細については 、Open_frmCompanyDetail コード モジュールと frmCompanyDetail の Form_Load に関するコメントを参照して、適用方法を確認してください。
Where 条件でフォームを開く代わりに、フォームの OpenArgs プロパティを使用して、フィルター情報を会社の詳細フォームに渡します。 OpenArgs の詳細については、 こちらを参照してください。
フィールドの表示/非表示
[フィールドの表示/非表示] を選択して、使用可能なすべてのフィールドの一覧を含むダイアログを開きます。1 つ以上の列をチェックまたはオフにすることができます。 選択したレイアウトは、アプリケーションの新しいバージョンがデプロイされるまで、あるセッションから別のセッションに保持されます。 データシートの列を表示または非表示にする方法に関するページを参照してください。
ラベルの作成
[ラベルの作成] ボタンをクリックすると、アクセス ラベル ウィザードが開きます。 ラベル ウィザードの詳細については、「Access でメーリング ラベルを作成する」を参照してください。
会社の詳細を開く
詳細行の任意の場所をダブルクリックして frmCompanyDetail を開きます
ID フィールド (ハイパーリンクとして設定) をクリックするか、詳細行の他のフィールドをダブルクリックして選択した会社に frmCompanyDetail を開き、 会社 一覧に適用されたフォーム フィルターを frmCompanyDetail に渡します。
会社の詳細 - frmCompanyDetail
一見すると 、frmCompanyDetail は比較的単純に見える場合があります。 ただし、それはありません。 フォームの背後にあるコードでは、多くのことが起こっています。 フォームでは、次のアクションと機能が強調表示されています。
-
いくつかのコマンド ボタンとリンク
-
会社の追加
-
Email会社一覧
-
フィルターの表示
-
会社を削除する
-
住所に基づいてマップを開く
-
ハイパーリンクから Web サイトを開く
-
-
追加/編集モードでアクションをキャンセルまたは保存する
-
会社の種類を変更できるタイミングを制御するビジネス ルール
-
削除イベント
の前の参照整合性チェック '
Form_Load イベントには、次のアクションが含まれます。
-
OpenArgs とカスタム Northwind StringToDictionary 関数を使用してフォームに渡される複数のパラメーターを使用する
-
OpenArgs フォーム プロパティを使用して、ユーザーが注文中に新しい会社を追加できるようにする
-
GoToRecord 手法を使用して新しい会社を追加する
-
SearchForRecord 手法を使用して、frmCompanyList で選択した会社に移動する
-
分岐/条件付き実行オプション ( 「Form_Load イベント」を参照)
-
オプション 1 - Case ステートメント
-
オプション 2 - それ以外の場合は入れ子
-
オプション 3 – ElseIf
-
オプション 4 - Else と ElseIf
の場合は入れ子 '
-
Form_Current イベントでは、次の処理が行われます。
-
サブ ManageFormOptions()を呼び出して、実行時にサブ フォームキャプションとソース オブジェクトを変更します。 このサブルーチンは、この形式の複数の場所から呼び出されます。
'
追加または編集モードの場合は、アクションを取り消すか保存します。
Access フォームはバインドされています。 それはどういう意味ですか? Microsoft から:
"'バインド' フォームは、テーブルやクエリなどのデータ ソースに直接接続され、そのデータ ソースからのデータの入力、編集、または表示に使用できるフォームです。
バインドされたフォームでは、Access ではデータを明示的に "保存" する必要はありません。 あるレコードから次の Access に移動すると、データが自動的に保存されます。 多くの場合、それはあなたが望むように動作します。 しかし、ユーザーが保存する準備ができていることを示すアクションを実行する必要がある場合はどうでしょうか。
たとえば、フォーム frmCompanyDetail には 、連絡先 (sfrmCompanyDetail_Contacts) のサブ フォームがあります。 では、会社のデータ (電話番号など) を追加または編集し始め、一時停止して連絡先の情報に気付いた入力ミスを修正するとどうなりますか? 既定では、Access では、連絡先レコードをクリックしたときに会社のレコードに加えた変更が保存されます。これは目的 ではありません 。
このフォームでは、会社の 1 つのレコードでこれを実現する 1 つの方法を示 します。
[キャンセル] ボタンがある理由は何ですか? エスケープ キーは、フォーム上のコントロールに入力または変更された (ただし保存されていない) データを 取り消します 。 この状態では、鉛筆アイコンがレコード セレクターに表示されます (行の左端に灰色の垂直バー)。
ただし、[ 会社の追加 ] ボタンをクリックすると、新しい会社レコードにデータの入力を開始するまで鉛筆アイコンが表示されません。 この時点で新しい会社を追加する際に考えを変えた場合はどうなりますか? エスケープ キーを押しても、まだデータを入力していないため、何も起こりません。 そのため、キャンセル ボタンが表示されます。
[ キャンセル ] ボタンをクリックすると、常に機能します。エスケープ キーは、データを入力または変更した場合にのみ機能します。
データの追加または変更を開始し、[保存] または [キャンセル] をクリックせずにフォームを閉じると、既定で Access によってデータが保存されます。
ビジネス ルール:
企業の Northwind ビジネス ルールとして、"保存" を明示的に指定する必要があります。 これを確認するには、ユーザーが Form_BeforeUpdate イベントで [保存] をクリックした場合、および [保存] をクリックしなかった場合は、変更を保存または取り消すかどうかを示すメッセージをユーザーに求めるメッセージをチェックする必要があります。
'
会社の種類の変更
ビジネス ルール: 会社に既存の注文、発注書、または製品の仕入先がある場合、ユーザーは会社の種類を変更できません。 上記の条件のいずれかが存在するかどうかを判断する関数 CompanyIsActive()を作成しました。 その場合、これらの参照が消去 (削除) されるまで、ユーザーは会社の種類を変更できません。
このルールは、このフォームでのみ適用されます。 運用環境に対応したアプリケーションでは、ユーザーがテーブルを直接開いてデータを変更することは許可されません。 Northwind では、テーブルを開いて必要な操作を行うことができます。 これは学ぶのに最適な方法ですが、ルールに違反する可能性のある変更を自由に行うこともできます。
常に防御的にプログラムを行う必要があります。 予期しないを計画します。 会社が現在荷送人であっても、それは彼らがしばらくの間ベンダーや顧客ではなかったという意味ではありません。 その ID は、 ProductVendor テーブルまたは PurchaseOrder テーブルの古いレコードで見つかる場合があります。
'
カスタム ダイアログ フォーム。
結果を表示するために、 cboCompanyTypeID_BeforeUpdate はダイアログ フォーム frmGenericDialog を使用します。 これは、表示する情報が多い場合に、標準のメッセージ ボックスに代わる優れた方法です。 また、同様の目的で従業員フォームと共に使用されます。
'
参照整合性チェックの削除
Northwind Starter Edition では、関連レコードがある場合に会社を削除できないことを Access の既定の動作で通知します。
Northwind Developer Edition では、Access の既定の動作を受け入れる代わりに、削除の前に通知されます。 これは、会社の種類の変更と同じ関数を使用して行います。function CompanyIsActive().
違いは、 注文 または購買発注のみを扱う点 です。 注文または発注書がない場合は、削除の意図が確認され、製品ベンダーと連絡先が存在する場合は削除されます。