長い複数項目のフォームがある場合は、1 つのアイテムに関する詳細情報をすばやく "ドリルダウン" して表示したい場合があります。 これを行うには、複数項目フォームを単一項目フォームにリンクします。 複数項目フォーム内の項目をクリックすると、単一項目フォームが開き、詳細が表示されます。
注:
-
この記事は、Access Web アプリ (Access で設計してオンラインで発行するデータベースの種類) には適用されません。
-
"リンク" によって他の意味を持つ場合は、この記事の最後にある 「その他の種類のフォーム リンク 」を参照してください。
フォームを作成する
ほとんどの場合、ドリルダウン構成の 2 つのフォームは、同じテーブルまたはクエリに基づいています。 使用するフォームのペアが既にある場合 (1 つはデータシートまたは複数のアイテム フォーム、もう 1 つは単一アイテムまたは "詳細" フォーム)、このセクションをスキップできます。 それ以外の場合は、次の手順を使用して作成します。
データシートまたは複数項目フォームを作成します。
-
ナビゲーション ウィンドウで、データシート フォームに必要なデータを含むテーブルまたはクエリを選択します。
-
[作成] > [その他のForms] をクリックし、目的の種類に応じて [複数のアイテム] または [データシート] をクリックします。
-
必要な設計変更を行います。 できるだけ多くの列を削除し、各項目を識別するのに十分な情報を残すことを検討してください。
-
フォームを保存して閉じます。
複数項目フォームの詳細については、「 複数項目ツールを使用してフォームを作成する」を参照してください。
単一項目または "詳細" フォームを作成します。
-
ナビゲーション ウィンドウで、詳細フォームに必要なデータを含むテーブルまたはクエリを選択します。 これは、最初のフォームで使用したテーブルまたはクエリと同じである可能性があります。
-
[ > フォームの作成] をクリック します。
-
必要に応じてデザインを変更し、フォームを保存して閉じます。
詳細については、「 フォーム ツールを使用してフォームを作成する」を参照してください。
詳細フォームを開くロジックを追加する
次に、複数項目またはデータシート フォームに少しマクロを追加します。 マクロは詳細フォームを開き、正しい項目が表示されていることを確認します。
マクロの操作をあまり行っていない場合は心配しないでください。この手順で見つかる XML をコピーして貼り付けることができます。
-
データシート フォームを使用している場合は、ナビゲーション ウィンドウでデータシート フォームをダブルクリックして開きます。 複数項目のフォームの場合は、ナビゲーション ウィンドウでフォームを右クリックし、[ レイアウト ビュー] をクリックします。
-
まだ開いていない場合は、F4 キーを押してプロパティ シートを開きます。
-
マクロを追加する列をクリックします。 これは、マクロが完了したときに詳細フォームを開くためにクリックする列です。 上の図では、マクロが frmContactList の ID 列に追加されています。
ヒント: マクロを複数の列に追加できます。
-
プロパティ シートの [ イベント ] タブで、[ オン クリック] または [ On Dbl Click ] プロパティ ボックスをクリックし (フィールドをシングル クリックまたはダブルクリックしてフォームを開くかどうかに応じて)、[ ビルド ] ボタン
をクリックします。 -
ビルダーの選択を求めるメッセージが表示されたら、[ マクロ ビルダー ] を選択し、[OK] をクリック します。
-
この XML ブロックを選択し、Ctrl + C キーを押してクリップボードにコピーします: <?xml version="1.0" encoding="UTF-16" standalone="no"?> <UserInterfaceMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application"> <UserInterfaceMacro For="ID" Event="OnClick"><Statements><Action Name="OnError"><Argument Name="Goto">Macro Name</Argument><Argument Name="MacroName">ErrorHandler</Argument></Action> <ConditionalBlock><If><Condition>[Form].[Dirty]</Condition><Statements><Action Name="SaveRecord"/></Statements></If></ConditionalBlock> <ConditionalBlock><If><Condition>IsNull([ID])</Condition><Statements><Comment>Open the form to a new record if the current ID is Null</Comment><Action Name="OpenForm"><Argument Name="FormName">frmContactDetails</Argument><Argument Name="DataMode">Add</Argument><Argument Name="WindowMode">Dialog</Argument></Action><Action Name="Requery"/></Statements></If><Else><Statements><Comment>Use a TempVar to pass a filter to the OpenForm action</Comment><Action Name="SetTempVar"><Argument Name="Name">Contact_ID</Argument><Argument Name="Expression">[ID]</Argument></Action><Action Name="OpenForm"><Argument Name="FormName">frmContactDetails</Argument><Argument Name="WhereCondition">[ID]=[TempVars]![Contact_ID]</Argument><Argument Name="DataMode">Edit</Argument><Argument Name="WindowMode">Dialog</Argument></Action><Action Name="RemoveTempVar"><Argument Name="Name">Contact_ID</Argument></Action><Action Name="RefreshRecord"/></Statements></Else></ConditionalBlock> </Statements></UserInterfaceMacro></UserInterfaceMacros>
-
マクロ ビルダーの空白領域 ([ 新しいアクションの追加 ] ドロップダウン リストのすぐ下) をクリックし、Ctrl キーを押しながら V キーを押してマクロ アクションを貼り付けます。 すべて問題がなければ、マクロ ビルダーに XML はまったく表示されません。次の手順で示すように、より読みやすいマクロ ブロックに展開されます。
-
必要に応じて、フォーム名 (frmContactDetails) とリンク列名 (ID) をフォームの名前と、2 つのフォームをリンクするために使用している列に置き換えます。 次の図は、自分の識別子名と一致するように編集する必要がある場所を示しています:
-
[ デザイン ] タブで、[ 保存 ] をクリックし、[ 閉じる] をクリックします。
-
クリック可能な列をハイパーリンクのように表示して、ユーザーがクリックできることを知らせる場合は、その列がまだ選択されていることを確認し、[プロパティ シート] で [ 書式 ] タブをクリックし、[ ハイパーリンクとして表示 ] プロパティを [常に] に設定します。
-
フォームを保存して閉じてから再度開き、変更した列をクリックまたはダブルクリックしてマクロをテストします。
デスクトップ データベースのマクロの詳細については、「デスクトップ データベース のコントロールにロジックを追加する」を参照してください。
その他の種類のフォーム リンク
フォーム/サブフォームの組み合わせを作成してリンクするには、「 サブフォーム (1 対多フォーム)を含むフォームを作成する」を参照してください。
テーブルやクエリなどのデータ ソースにリンクされたフォームを作成するには、「 フォーム ツールを使用してフォームを作成する」を参照してください。