在我的 MS Access 数据库中,我想创建一个表格来填写新订单。
我有一张桌子顾客和一张桌子命令
**Customers** => (id, firstname, lastname, address)
^
|
**Orders** => (customer, product, total)
(注:顾客字段与ID)
我想创建一个表单来放置产品,然后从某种下拉菜单中选择哪个客户订购该产品。
如何在 Access 中实现这一点?根据我的研究,我所能做的就是创建一个表单,其中包含当前表中字段的占位符,但没有任何东西可以利用关系来帮助我填写顾客场地。
答案1
是的,你绝对可以做到这一点。有一些技巧,但不是很多。
- 创建新表单并将记录源设置为“订单”表。要查看表单属性窗口,请在表单中单击鼠标右键,然后选择“表单属性”
- 从“表单设计”功能区中,将新的组合框拖到表单上
- 如果出现向导,我会取消它并手动完成所有操作,但如果您愿意,也可以使用它。
- 确保选择了组合框并查看其属性表
- 将控制来源设置为字段“客户”
- 将行源设置为“SELECT Customers.ID, Customers.Firstname, Customers.LastName FROM Customers;”或单击“...”按钮以创建此简单查询。请注意,FIRST 字段是 ID,它是表单和组合框之间的链接。
- 现在它可以正常工作了,但它只会显示 ID,这毫无用处。您需要修复组合框的格式。转到属性中的格式选项卡,然后查找“列数”。将其更改为 3。
- 下面是列宽。您可以使用它来隐藏 ID 字段,方法是输入“0,3,3”。您可能想尝试使用这些值,使它们与名称的长度完美匹配。
- 您可能希望打开或不打开“列头” - 由您决定。
- 现在在“表单视图”中查看表单并尽情享受吧!
我通常会单独保存组合框后面的查询。然后,在第 6 步中选择查询,而不是粘贴 SQL。这样做的原因是,您可以重复使用常见组合框的数据源。当数据库增长时,命名约定是一件非常好的事情,因此,命名时要合乎逻辑。
就这一点而言,我会将表变量的名称更改为以下名称。对我来说,这样更清楚。订单也需要 ID。如果 ID 具有相同的名称,则在连接表时只需“匹配名称”即可。
**Customers** => (CustomerID, firstname, lastname, address)
^
\
**Orders** => (OrderID, CustomerID, product, total)
您还可以将 First/Last 合并到一个字段中,而不是将它们分开(在查询中有一个字段 Custname:[Firstname] & " " & [Lastname])。您可以使组合框在访问中非常强大,但请注意,如果它们包含很多行 - 它们会变慢。
对于订单上的产品,您确实需要创建另一个名为“订单行”的表,其中包含 OrderLineID、OrderID、ProductID 和 Qty 作为字段。然后一个订单可以有多个产品。这超出了问题的范围,但我想也为您指出正确的方向。您还需要一个产品表。