选择以下任何主题,了解如何在 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 中,我们允许打开表并执行任何所需操作。 这是学习的好方法,但也让你可以自由地进行可能违反规则的更改。
应始终以防御性进行编程。 计划意外。 即使公司目前是发货人,这并不意味着他们有时不是供应商或客户。 可以在 ProductVendor 或 PurchaseOrder 表中的旧记录中找到其 ID。 '
自定义对话框窗体。
为了显示其发现结果, cboCompanyTypeID_BeforeUpdate 使用对话框窗体 frmGenericDialog。 当你要显示大量信息时,这可以是标准消息框的一个很好的替代方法。 它还与员工表单一起使用,以实现类似目的。' 删除引用完整性检查
在 Northwind Starter Edition 中,我们让 Access 默认行为通知你公司具有相关记录时无法删除它。
在 Northwind Developer Edition 中,我们会在删除之前通知你,而不是接受 Access 默认行为。 我们使用与更改公司类型相同的函数执行此操作;function CompanyIsActive () 。
不同之处在于,我们只关心 订单 或 采购订单。 如果没有 订单 或 采购订单,我们确认你打算删除,如果 产品供应商 和 联系人 存在,我们将删除它们。