如果你有一个很长的多项目窗体,有时你想要快速"向下钻取"以查看有关单个项目的详细信息。 可通过将多项目窗体链接到单项目窗体,在 Access 中实现此要求。 单击多项目窗体中的项目时,单项目窗体将打开以显示详细信息。
创建窗体
在大多数情况下,向下钻取配置中的两个窗体基于同一个表或查询。 如果已有一对想要使用的窗体 (一个窗体是数据表或多个项目窗体,另一个窗体是单个项目或"详细信息"窗体) ,可以跳过本部分。 否则,请使用以下过程创建它们:
创建数据表或多项目窗体:
-
在导航窗格中,选择包含数据表窗体上需要的数据的表或查询。
-
单击">窗体",然后单击"多个项目"或"数据表",具体取决于您需要哪种类型。
-
进行想要的任何设计更改。 请考虑删除尽可能多的列,仅保留足够的信息来标识每个项目。
-
保存并关闭窗体。
有关多项目窗体的详细信息,请参阅"使用多项目工具创建窗体"。
创建单个项或"详细信息"窗体:
-
在导航窗格中,选择包含详细信息窗体上需要数据的表或查询。 这很可能是用于第一个窗体的同一个表或查询。
-
单击 "创建 > 窗体。
-
进行想要的任何设计更改,然后保存并关闭窗体。
有关详细信息,请参阅"使用窗体工具创建窗体"。
添加用于打开详细信息窗体的逻辑
现在,向多项目或数据表窗体添加一个小宏。 宏将打开详细信息窗体,并确保显示正确的项。
如果尚未对宏执行太多操作,请不要担心;只需复制并粘贴在此过程找到的 XML。
-
如果使用数据表窗体,请在导航窗格中双击它以打开它。 对于多项目窗体,请在导航窗格中右键单击它,然后单击"布局视图"。
-
按 F4 打开属性表(如果尚未打开)。
-
单击要添加宏的列。 这是在宏完成后单击以打开详细信息窗体的列。 在上图中,宏将添加到 frmContactList 的 ID 列。
提示: 可以将宏添加到多个列。
-
在属性表的"事件"选项卡上,单击"单击"或"单击Dbl"属性框 (具体取决于希望窗体通过单次单击还是双击字段) 打开,然后单击"生成"按钮 。
-
如果 Access 提示你选择生成器,请选择"宏生成器",然后单击"确定"。
-
选择此 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) 替换为表单名称和用于链接两个窗体的列。 下图显示了可能需要进行编辑以匹配自己的标识符名称的地方
: -
在"设计"选项卡上,单击"保存",然后单击"关闭"。
-
如果希望可单击列 () 显示为超链接,以便用户知道他们可以单击它,请确保该列仍处于选中状态,在"属性表"中,单击"格式"选项卡,将"显示为超链接"属性设置为"始终"。
-
保存并关闭窗体,然后重新打开它并单击或双击修改的列来测试宏。
有关桌面数据库中的宏详细信息,请参阅"向桌面数据库中的控件添加逻辑"。
其他类型的表单链接
若要创建窗体/子窗体组合并链接在一起,请参阅"创建包含子窗体的窗体 (一 对多窗体) 。
若要创建链接到数据源(如表或查询)的窗体,请参阅"使用窗体工具创建窗体"。