在 MS Access 中,表单如何提供包含来自相关表单的数据的下拉列表?

在 MS Access 中,表单如何提供包含来自相关表单的数据的下拉列表?

在我的 MS Access 数据库中,我想创建一个表格来填写新订单。

我有一张桌子顾客和一张桌子命令

**Customers** => (id, firstname, lastname, address)
                  ^
                  |
**Orders** =>   (customer, product, total)

(注:顾客字段与ID

我想创建一个表单来放置产品,然后从某种下拉菜单中选择哪个客户订购该产品。

如何在 Access 中实现这一点?根据我的研究,我所能做的就是创建一个表单,其中包含当前表中字段的占位符,但没有任何东西可以利用关系来帮助我填写顾客场地。

答案1

是的,你绝对可以做到这一点。有一些技巧,但不是很多。

  1. 创建新表单并将记录源设置为“订单”表。要查看表单属性窗口,请在表单中单击鼠标右键,然后选择“表单属性”
  2. 从“表单设计”功能区中,将新的组合框拖到表单上
  3. 如果出现向导,我会取消它并手动完成所有操作,但如果您愿意,也可以使用它。
  4. 确保选择了组合框并查看其属性表
  5. 将控制来源设置为字段“客户”
  6. 将行源设置为“SELECT Customers.ID, Customers.Firstname, Customers.LastName FROM Customers;”或单击“...”按钮以创建此简单查询。请注意,FIRST 字段是 ID,它是表单和组合框之间的链接。
  7. 现在它可以正常工作了,但它只会显示 ID,这毫无用处。您需要修复组合框的格式。转到属性中的格式选项卡,然后查找“列数”。将其更改为 3。
  8. 下面是列宽。您可以使用它来隐藏 ID 字段,方法是输入“0,3,3”。您可能想尝试使用这些值,使它们与名称的长度完美匹配。
  9. 您可能希望打开或不打开“列头” - 由您决定。
  10. 现在在“表单视图”中查看表单并尽情享受吧!

我通常会单独保存组合框后面的查询。然后,在第 6 步中选择查询,而不是粘贴 SQL。这样做的原因是,您可以重复使用常见组合框的数据源。当数据库增长时,命名约定是一件非常好的事情,因此,命名时要合乎逻辑。

就这一点而言,我会将表变量的名称更改为以下名称。对我来说,这样更清楚。订单也需要 ID。如果 ID 具有相同的名称,则在连接表时只需“匹配名称”即可。

**Customers** => (CustomerID, firstname, lastname, address)
                           ^
                            \
**Orders** =>   (OrderID, CustomerID, product, total)

您还可以将 First/Last 合并到一个字段中,而不是将它们分开(在查询中有一个字段 Custname:[Firstname] & " " & [Lastname])。您可以使组合框在访问中非常强大,但请注意,如果它们包含很多行 - 它们会变慢。

对于订单上的产品,您确实需要创建另一个名为“订单行”的表,其中包含 OrderLineID、OrderID、ProductID 和 Qty 作为字段。然后一个订单可以有多个产品。这超出了问题的范围,但我想也为您指出正确的方向。您还需要一个产品表。

相关内容