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

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

Northwind Orders 示例应用程序的开发人员版比初学者版更高级。 它扩展了数据库架构 () 使用的表,现在提供了其他高级功能。 本文旨在介绍 Microsoft Access 的功能,而不是运行任何特定业务。

  • “订单列表”可从功能区获取。 它有几个筛选器选项,以及用于打开每个订单的超链接。

  • “订单列表”和“功能区”都有一个“添加订单”按钮,用于打开新的空白订单。

  • 在“新建订单”窗体上,从下拉列表中选择现有客户。 此时,将选择 你的员工 姓名 和新 状态。 订单日期也已填写。 税率是从 SystemSettings 表中读取的,从客户记录中默认为“税务状态”。

  • 新订单和采购订单将添加到功能区的 MRU (最近使用的) 列表中。 有关详细信息,请参阅本文MRU 列表部分。 

  • 暂时将 “发货日期 ”和“ 付款日期 ”留空。

  • 若要为新客户添加订单,请输入公司名称并选项卡。 将打开“公司详细信息”窗体以完成新的客户记录。 然后关闭它并继续执行订单。 新公司现在将位于 “客户 ”下拉列表中。

  • 若要向订单添加项,请为此订单选择“ 产品类别 ”和“ 产品 ”,然后输入“数量”。 填写了“单价”,Price 由表达式计算。

  • 使用“订单”窗体顶部的按钮,从 “新建>开票>已发货>已关闭 ”工作流中移动订单状态。

  • 仅当为该订单分配了产品时,才能开具发票。 如果订单项处于“无库存”或“订单中”状态,将发生验证错误。 用户可以为该产品创建并接收采购订单,订单项状态将调整为 “已分配”。

  • 若要交付订单,必须输入发货人和运费。 如果忘记执行此操作,将发生验证错误。 运费将添加到订单总额中。

  • 可以使用“删除订单”按钮删除未托管 的订单

  • 订单超过 “新建” 状态后,无法修改订单行项。

  • 在 Northwind 初学者版本中,订单过程非常简单, (例如,库存始终可用,永远不会用完,并且永远不必) 购买。 现在,在此开发版本中,一个更现实的过程至少解决了一些此类问题。 请记住,我们展示了 Access 功能和最佳做法,而不是实现实际应用程序。 

  • 此处未实现实际应用程序的证据包括日期未验证的事实。 因此,可以输入不合逻辑的日期,例如订单日期 之前的 发货日期。 

本部分介绍订单窗体 frmOrderDetails 的值得注意的实现详细信息:

订单窗体从简单的查询 qryOrder 获取数据 (请参阅 RecordSource 属性) 。 最佳做法是将数据输入表单基于简单的单表查询。 请注意,不需要在此查询中包含 OrderDetails 表。 订单详细信息由子窗体处理。

OrderList 窗体可以打开 Order 窗体的多个实例。 这很方便,因为销售代表处理大量中断,可能需要在处理第一个订单时打开另一个订单,或者将其与第三个订单进行比较。 此处介绍了该技术。

各种 ID 字段从两列组合框获取其值:隐藏的 ID 列和可见的“说明”列。 这些组合框绑定到简单的双列查询:请参阅 RowSource 属性。

工作流按钮具有与之关联的业务逻辑,迫使用户将订单从 1 提升到 4。 Northwind 开发团队知道,某些公司可能使用不同的规则。 这将导致按钮单击事件的不同实现,以及重新考虑何时确定订单以及何时仍可删除订单。

子窗体 sfrmOrderDetails 绑定到更复杂的查询。 其原因将在下面的级联组合框部分讨论。 保存行后,检查Form_AfterUpdate 事件中的清单,并且可以运行更强大的数据库查询。

ProductCategory 和 Product 是级联组合框:从第一个 (ProductCategory) 选择会将下一个框缩小到匹配子产品记录。 下面详细介绍了此处使用的技术。

保存记录时,必须填写必填字段。 在 Starter Edition 中,我们允许发生 Access 默认行为;在此 Dev 版本中,实现了更用户友好的技术。 下面详细介绍了此处使用的技术。

对于每个订单行项,将检查可用库存并相应地设置状态。 此处介绍了此功能的基本概念。
 

级联组合框

将“产品类别”和“产品”下拉列表实现为级联组合框比较棘手,因为 Access 不支持现成的此功能。 此技术需要执行四个步骤:

窗体必须处于连续窗体模式, (不能处于数据表) 。 文本框与每个组合框的文本部分重叠,只显示其下拉箭头。 

表单的记录源查询 qryOrderLineItems 通常使用 OrderDetails 表,但也联接 Products 和 ProductCategories 表来选取 ProductName 和 ProductCategoryName。 两个重叠的文本框绑定到这些字段。

“产品”组合框的 RowSource 将回溯 到 cboProductCategories ,以仅返回该组合框中所选类别的产品。 请注意语法“[Form]![cboProductCategories]“ 中的 criteria 表达式,比显式 Forms 更灵活 !FormName!ControlName 语法,按名称引用一个窗体。

在未绑定的 ProductCategories 组合框中选择产品类别后,其 AfterUpdate 事件会将“产品”组合框设置为其列表中的第一个值。 这会在窗体的 RecordSource 中创建一个新行,该行将填充 CategoryName ,以便可以通过其重叠的文本框显示该行。
 

验证

使用 Northwind Dev Edition 中实现的验证代码只需要 3 行代码:

  • 在Form_BeforeUpdate中:
       Cancel = ValidateForm (Me)

  • in Form_AfterUpdate and Form_Current:
        ValidateForm_RemoveHighlights Me

使代码非常独立是一个很好的模式,因为它可以轻松地在任何地方实现。 专业开发人员可以进一步采用这一点,例如,使用表单子类。 (这超出了 Northwind Dev.) 的目标

表单对象将传递给独立验证代码进行验证。 然后,它会检查基础 RecordsetClone Fields 集合,找出哪些控件绑定到必需字段,并检查它们是否具有值。 否则,它们将突出显示。

需要更多帮助?

需要更多选项?

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

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

此信息是否有帮助?

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

谢谢您的反馈!

×