使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

选择以下任意主题,了解 Northwind Developer Edition 中的 “员工 ”。 

员工有一个拆分窗体,用作列表和详细信息窗体。 

使用 Employees 添加新员工并更新有关现有员工的信息。 

选择功能区上的“ 员工”选项卡,在“员工列表”窗体 frmEmployeeList 中显示员工,这是具有以下功能的拆分窗体: 

  • 窗体的顶部是一名员工的单个视图。

  • 窗体的下半部分是所有员工的数据表视图。

  • 选择任一部分中的员工还会将焦点设置为拆分窗体另一部分中的该员工。

  • 可以在拆分窗体的任一部分添加、编辑或删除员工。

  • 将拆分窗体与数据表视图部件结合使用假定窗体的记录源具有多个记录。

拆分窗体的潜在性能影响 

大多数开发人员倾向于 加载未筛选的表或查询作为窗体的记录源。 将窗体筛选为单个记录可将要从表传输到窗体的数据量降至最低。 使用本地 Access 表时,加载筛选的记录源和未筛选的小型记录源之间的差异可能几乎无法察觉。 但是,当 Access 表替换为基于服务器的远程数据库(例如SQL Server)时,会丢失此性能。 

Northwind 中的员工表不应变得非常大,因此它是未筛选的记录源的候选项。 但是,绑定到其他表(例如订单详细信息)的表单(可能会增长到数千条记录)不是未筛选记录源的候选项。
 

编辑员工

在拆分窗体中添加或编辑记录时,用户可以在窗体视图或数据表视图中输入值。 有些字段是必需的,有些字段是可选的。 窗体验证必填字段中是否存在值。 请参阅下面的 必需字段验证

查找表、值列表和下拉列表控件

  • 标题” 下拉列表将条目限制为预先选择的游戏列表。 标题位于名为 Titles 的查阅表中。

  • 某些预期的选项已存储在查阅表格中,但用户可以使用组合框的默认 Access 行为或下拉列表控件将新标题添加到查阅表格。

    • “标题”组合框的“限制列表”属性设置为“是,并在“列表项编辑窗体”属性中标识标题的编辑窗体。 选择窗体上的下拉列表会在下边缘显示编辑图标。 
      ...

单击编辑图标将打开 游戏 编辑窗体 frmEmployeeTitles,你可以在其中更改或添加到已批准游戏列表。 

注意:在大多数生产环境中,编辑或添加游戏仅限于具有增强权限的用户。
 

Self-Referential 查找字段

employee 函数演示了 Self-Referential ID 字段的概念。 为了支持指定员工的主管,该表具有 一个“SupervisorID” 字段,其中包含其他员工的 EmployeeID。 若要指定主管,请在此字段中输入另一名员工的 EmployeeID 。 访问对此关系强制实施引用完整性。

SupervisorID 在员工窗体中以下拉列表或组合框的形式实现;其行源是从 Employee 表中筛选的记录集。 由于它是自引用的,因此查询必须排除所选员工的自己的 EmployeeID。 例如,Employee Karen FinsterSupervisorID 的行源不包括 Karen 自己的 EmployeeID。 她不能做自己的主管。

附件字段和控件

员工图片存储在表中的附件字段中。 使用附件字段的默认 Access 行为添加新图像或更改现有图像。 
...

注意: 我们在 “员工 ”表中包括了一个附件字段,以演示 Access 中的功能。 嵌入图像会增加 accdb 的大小,因此不被视为最佳做法。 在生产应用程序中实现环境之前,请仔细评估环境。 首选替代方法是存储所有图像的网络文件夹,以及包含图像路径的表中文本字段中的链接,而不是“附件 ”字段

包含相关信息的子窗体

“员工”窗体右侧的“订单”子窗体 () 显示员工处理的任何) (最近的订单。 子窗体在数据表视图中列出订单,按从新到旧的顺序排序。 若要编辑该员工的现有订单,请单击“订单”子窗体中的超链接“订单 ID #”。

员工表单的 Recordsource

名为 qryEmployees 的 查询返回窗体中的记录。 通常将查询(而不是表)视为最佳做法。 查询仅返回一个表中的记录。 此外,可以参数化查询以限制返回的记录数。 

  • 此查询的 Select 子句使用通配符“*”返回 Employee 表中的所有字段。

  • 查询中的两个计算字段返回 FirstName LastNameLastName, FirstName
     

控件中的计算值

注意: 计算字段 存储在表中。 但是, 它们在 窗体的 记录源中可用。

“员工”窗体上的大多数控件都 已启用 ,因此你可以使用鼠标或制表符将其选中,并且未锁定 ,因此可编辑。 

除了内置 Access 行为外,窗体中的 VBA Subs 和 Functions、窗体上的控件以及独立模块中的 VBA Subs 和 Functions 还执行员工所需的基本逻辑。 以下部分介绍函数和实现这些函数的代码。 

内置控件操作

窗体的“记录选择器”默认行为: 

  • 单个视图中,单击窗体左侧的记录选择器可保存包含任何编辑的当前记录。 通过左键单击记录选择器进行保存会触发相应的 VBA 子和函数。

  • 右键单击 单个视图中窗体左侧的记录选择器会弹出一个菜单来执行剪切、复制或粘贴记录等操作。 删除或剪切记录会触发下面所述的 EmployeeCanBeDeleted 函数。

  • 必须启用记录选择器,窗体才能使此默认行为可用。
     

表单中记录的引用完整性

引用完整性可防止删除在相关表中具有 记录的员工。 因此,如果用户尝试删除包含子记录的记录,Access 将引发错误。 Northwind 员工窗体 Access 将有关引用完整性的通用默认错误消息替换为自定义消息。

窗体的 Delete 过程中的代码会响应尝试从右键单击菜单中 剪切记录或使用 Delete 键删除记录。 

专用函数 EmployeeCanBeDeleted“订单”、“ 采购订单”、“ 员工”和“ 员工特权 ”表中检查该员工的相关记录。 

如果找到它们,此函数将禁止显示默认错误消息,并通知用户无法使用 与客户表单相同的 通用对话框删除记录的原因,以通知用户无法删除 客户的原因。

验证

员工实现验证和标准错误处理。 控件有两种类型的验证。

  • 必填字段

  • 标准格式

必需的字段验证

 所有员工都需要三个字段:

  • FirstName

  • LastName

  • Job Title

在此开发人员版本中,表单的 “更新之前”事件将验证必填字段。 如果用户尝试为一个或多个没有值的必填字段保存没有值的员工记录,则验证将取消保存并突出显示没有值的任何必填字段。 在 Northwind 的“员工”窗体中,所需的字段验证由窗体的“ 更新前”事件处理,而不是由各个控件处理。

员工表单的 “更新前” 事件验证三个必填字段的值是否存在。 保存新的或编辑的员工记录会触发表单的“更新前”事件,该事件调用检查并响应是否存在所需值的公共函数。

modValidation 模块包含以下函数:

  • ValidateForm

  • IsValidForm

  • HighlightInvalidControls

  • HighlightControl

  • ValidateForm_RemoveHighlights

管理新员工

单击“ 添加员工”按钮可运行专用子 btnNewEmployee_Click,以便: 

  • 保存当前记录,并

  • 将窗体的焦点设置为新记录
    '

选择查询中的通配符与命名字段

qryEmployees 中的 SELECT 子句使用通配符“*”选择表中的所有字段。 通配符查询设计会自动包括基础表中新添加的任何字段,而使用特定字段列表是无法实现的。 另一方面,可以列出特定字段,以将返回的 记录集 限制为仅显示窗体中所需的字段。例如。

适当的设计选择

设计应基于符合要求的适当方法。 尽管在可行的情况下,首选项通常会转到最不需要将来维护的方法, (即通配符方法) 。 

绑定到查阅表的 ComboBox — 两种方法

相关项(如员工的主管)显示在窗体上的下拉列表或组合框中。 窗体的记录源查询中只需要 SupervisorID 的外键,因为该字段 (SupervisorID) 绑定到外键字段。 组合框还显示相应的文本值。

具有隐藏 ID 列和可见“说明”列的双列组合框使此功能生效。 在“员工窗体”中,“主管”组合框绑定到简单的双列查询。 请参阅 Supervisor 的 RowSource 属性。

但在某些情况下,查阅表没有单独的主键,因此,文本值本身是主键。

当可能值列表较小且高度稳定(例如员工的职务)时,通常称为“已关闭域”。 更改或添加 Title 的值并不常见。 关闭的域查找表是单列查询方法的候选项。

在“员工”窗体中,“标题”组合框绑定到标题的单列查询。 请参阅 Titles 的 RowSource 属性。 

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×