应用对象
Microsoft 365 专属 Access Access 2021 Access 2019

选择以下任何主题,了解如何在 Northwind Developer Edition 中管理公司。 

注意: 访问开发人员展示版中引用了此页面

在 Northwind Starter Edition 中, 客户 是唯一的公司类型。 在 Developer Edition 中,我们扩展了该版本,以包括客户发货人和供应商。 

我们还扩展了 “产品 ”,以包含产品的多个供应商。   

每个公司只能是一种类型:客户发货人供应商。 本文的 frmCompanyDetail 部分介绍了何时可以更改公司类型的业务案例。 '

公司类型及其使用位置 

  • 订单客户

  • 订单的发货人

  • 采购订单的供应商

  • 产品的供应商

此外,Northwind 开发人员版本中 的公司 可以有多个 联系人 '

功能区中的公司

从功能区中选择“公司”,将在 frmCompanyList 中显示 Northwind 中的“公司”。 

公司列表 - frmCompanyList

在 Northwind 开发人员版本中, frmCompanyList 是拆分形式。 拆分窗体同时提供两个数据视图: 窗体视图数据表视图。 它还具有页眉和页脚。  在此实现中,我们不会显示窗体视图。 通过不显示窗体视图,我们将有一个包含页眉和页脚的数据表。  

以下是实现此目的的方式:  

frmCompanyList 中,标头和数据表之间的拆分条不可见。 窗体属性 “拆分窗体拆分器栏 ”设置为 “否”,从而隐藏窗体视图。 

拆分窗体和数据表窗体类似于 Excel 工作表。 它们支持筛选和排序,你可以显示、隐藏或移动字段或列。 此外,可以汇总列。 

拆分窗体的页眉和页脚部分允许你使用命令按钮、图像、文本 (标签) 和任何其他要改善用户体验的访问表单控件。 若要了解有关窗体和拆分窗体的详细信息,可以从此处开始。 数据表不显示页眉和页脚部分。

通过窗体简介创建拆分窗体了解详细信息。  '

“公司列表”窗体支持以下五项操作:

  • 应用自定义、预生成筛选器和/或按需筛选

  • 显示/隐藏字段

  • 创建标签

  • 显示筛选器

  • 添加新公司

双击详细信息行中的任意位置,打开 “公司详细信息” 窗体 (,而不只是像其他表单) 一样在 ID 上。  '

预生成筛选器和按需筛选

frmCompanyList 表单具有在 Northwind 中筛选公司的丰富机会。  在屏幕顶部,可以使用以下单选按钮进行筛选:

  • 所有公司 (默认)

  • 仅限客户

  • 仅限发货人

  • 仅限供应商

此外,数据表的内置按需筛选选项也可用。 应用于 “公司列表” 窗体 (预生成或按需) 的任何筛选器将在打开时传递并应用于 frmCompanyDetail 。  

若要将筛选器从一个窗体传递到另一个窗体,必须首先清理窗体的筛选器字符串以仅包含字段名称。 查看代码模块 Open_frmCompanyDetail 有关如何完成此操作的更详细说明,在 frmCompanyDetail 中查看 Form_Load 注释,了解如何应用它。

我们通过窗体的 OpenArgs 属性将筛选器信息传递到“公司详细信息”窗体,而不是使用 where 条件打开窗体。  可 在此处了解有关 OpenArgs 的详细信息。

显示/隐藏字段

选择“显示/隐藏字段”以打开包含所有可用字段列表的对话框;可以检查或取消选中一个或多个列。 所选布局从一个会话一直保留到另一个会话,直到部署应用程序的新版本。 请参阅显示或隐藏数据表中的列。 

创建标签

“创建标签”按钮将打开“访问标签向导”。 在此处详细了解标签向导:在 Access 中创建邮件标签。 

打开公司详细信息

双击详细信息行中的任意位置打开 frmCompanyDetail

单击“ID”字段 (设置为超链接) ,或双击详细信息行中的其他任何字段,打开所选公司的 frmCompanyDetail,并将应用于公司列表的任何窗体筛选器传递给 frmCompanyDetail

公司详细信息 - frmCompanyDetail

乍一看, frmCompanyDetail 看起来可能相对简单。  但是,不是。  在表单背后的代码中,发生了很多事情!  窗体突出显示以下操作和功能:

  • 多个命令按钮和链接

    • 添加公司

    • Email公司列表

    • 显示筛选器

    • 删除公司

    • 基于地址打开地图

    • 从超链接打开网站

  • 在添加/编辑模式下取消或保存操作

  • 用于控制何时可以更改公司类型的业务规则

  • 删除事件前的引用完整性检查 '

Form_Load 事件包括以下操作:

  • 使用通过 OpenArgs 和自定义 Northwind StringToDictionary 函数传递给表单的多个参数

  • 使用 OpenArgs 表单属性允许用户在接受订单时添加新的公司

  • 使用 GoToRecord 技术添加新 的公司

  • 使用 SearchForRecord 技术移动到 frmCompanyList 上选择的公司

  • 分支/条件执行选项 (请参阅 Form_Load事件)

    • 选项 1 - Case 语句

    • 选项 2 - 嵌套 If Else

    • 选项 3 – ElseIf

    • 选项 4 - 嵌套 If Else 和 ElseIf '

在 Form_Current 事件中,发生以下情况: 

  • 在运行时通过调用子 ManageFormOptions () 更改子窗体描述文字和源对象。 此子例程从此表单中的多个位置调用。  '

处于添加或编辑模式时取消或保存操作。 

我们的 Access 表单是绑定的。  这是什么意思?  来自 Microsoft:“'绑定'窗体是直接连接到数据源(如表或查询)的窗体,可用于输入、编辑或显示来自该数据源的数据。

使用绑定窗体时,Access 不需要显式“保存”数据。  从一条记录移动到下一条记录时,Access 会自动保存数据。  通常,它的工作方式正是你想要的。  但是,如果用户必须执行操作来指示他们已准备好保存,该怎么办? 

例如, frmCompanyDetail 表单具有 联系人 (sfrmCompanyDetail_Contacts) 的子窗体。  那么,如果你开始添加或编辑公司数据(例如电话号码),并暂停以修复你在联系人信息中注意到的拼写错误,会发生什么情况?  默认情况下,当你单击联系人记录时,Access 将保存你在公司记录中所做的任何更改 ,这不是你想要 的。 

在此窗体中,我们演示了一种使用 公司单条记录实现此目的的方法。

使用“ 取消 ”按钮的原因是什么? 转义键 将取消 窗体控件中任何输入或更改 (但未保存) 数据。 在此状态下,铅笔图标显示在记录选择器中, (行) 最左侧的灰色垂直条。

但是,单击“ 添加公司 ”按钮后,你会注意到,在开始在新公司记录中输入数据之前,没有铅笔图标。 如果此时改变主意添加新公司,该怎么办? 如果按转义键,则不会发生任何操作,因为你尚未输入任何数据。 这就是我们有“取消”按钮的原因。

单击“ 取消 ”按钮始终有效;仅当输入或更改数据时,转义键才有效。  

如果开始添加或更改数据,然后关闭窗体而不单击“保存”或“取消”,则默认情况下 Access 将保存数据。  

业务规则: 作为公司的 Northwind 业务规则,我们希望你明确指示要“保存”。  为了确保这一点,我们必须检查用户是否在Form_BeforeUpdate事件中单击了保存,如果他们没有单击“保存”,则提示用户指示他们是否要保存或取消其更改。 '

公司类型更改

业务规则: 如果公司有任何现有订单、采购订单或是产品的供应商,则用户无法更改公司类型。 我们创建了一个函数 CompanyIsActive () ,以确定是否存在上述任何条件。 如果这样做,则在清除这些引用 (删除) 之前,用户无法更改公司类型。 

此规则仅以此形式强制执行。  在生产就绪应用程序中,不允许用户直接打开表来更改数据。  在 Northwind 中,我们允许打开表并执行任何所需操作。  这是学习的好方法,但也让你可以自由地进行可能违反规则的更改。 

应始终以防御性进行编程。 计划意外。 即使公司目前是发货人,这并不意味着他们有时不是供应商或客户。 可以在 ProductVendorPurchaseOrder 表中的旧记录中找到其 ID。 '

自定义对话框窗体。

为了显示其发现结果, cboCompanyTypeID_BeforeUpdate 使用对话框窗体 frmGenericDialog。 当你要显示大量信息时,这可以是标准消息框的一个很好的替代方法。 它还与员工表单一起使用,以实现类似目的。'  删除引用完整性检查

在 Northwind Starter Edition 中,我们让 Access 默认行为通知你公司具有相关记录时无法删除它。  

在 Northwind Developer Edition 中,我们会在删除之前通知你,而不是接受 Access 默认行为。  我们使用与更改公司类型相同的函数执行此操作;function CompanyIsActive ()

不同之处在于,我们只关心 订单 采购订单。 如果没有 订单 采购订单,我们确认你打算删除,如果 产品供应商联系人 存在,我们将删除它们。 

需要更多帮助?

需要更多选项?

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