我有一个Customer
表、一个Order
表、一张Orderline
表和一张Product
表。它们都有一个Autonumber
字段作为主键,Orderline
有一个对Order
表上Order ID
的外键引用:
ORDER
-----
Order ID - Autonumber
Customer ID - Number
...
ORDERLINE
---------
OrderLine ID - Autonumber
Order ID - FK to Order
Product ID - FK to Product
Quantity
PRODUCT
-------
Product ID - Autonumber
Product details...
我有一个可以选择客户的表格,然后是Orderline
表中的记录列表,以及我从该子表格中引用的查询,其中列出了Order ID
、Orderline ID
、Product ID
、Product details
。。。
我有两个问题。
所有订单都会出现,我只想要与此订单关联的订单(当表单第一次加载时,应该为零)。
当我输入要添加到新订单中的
Product ID
时,我希望出现一个新的Order ID
,(自动递增)和一个新订单行ID, (Autoincremented) and the details of the product that I have selected, corresponding to the
产品ID `我已经输入了,但我收到了以下错误消息:
您请求的对表的更改未成功,因为它们会在索引、主键或关系中创建重复的值。更改包含重复数据的字段中的数据,删除索引,或重新定义索引以允许重复条目,然后重试
问题是,当我尝试创建新记录时,表应该为我创建唯一的键,当我直接进入每个表并输入一个新的记录时,自动编号确实有效,并且确实创建了一个唯一的键-只是当它试图同时创建Order ID
和Orderline ID
时,它似乎失败了。
我应该说,我在这方面花了好几天的时间,搜索了无数的搜索引擎,观看了YouTube上关于创建订单的一系列视频,但都无济于事。我相信,任何了解Access的人都能帮助我,因为如果这是SQL中的一个问题,我可以在几分钟内帮助任何处于类似情况的人。
创建子窗体时,必须指定父窗体和子窗体之间的关系。与您为表创建的关系相同。然后只有Access会为您筛选记录。
关于你的问题。您应该在[订单]表中创建一个新的[订单]记录,您将在其中输入/选择[客户id、员工id、订单详细信息等]
一个订单可以有多个项目,因此您的[order_items]表(我假设orderline是您用于该表的术语)存在
- order_id
- product_id(order_id,product_id复合密钥)
- 数量
- 价格
- 等等
现在,当您想要开始接受订单时,您需要创建一个绑定到tbl_order的新表单。在frm_order中,您将有一个子订单,该子订单绑定到tbl_oder_items(在您的情况下为orderline)
frm_order和frm_oder_items应该具有关系。通常当您拖动表格创建子窗体时,ACCESS会要求设置关系。如果手动创建子窗体:
- 选择子窗体
- 转到属性表
- 选择链接主字段:orderid
- 选择链接子字段:orderid
现在,当您打开frm_order时,它将显示tbl_order_items表中的所有记录(换句话说,订单列表中的所有产品)。
tbl_order_item/orderline表也通过product_id字段引用产品表。
在frm_order_items中插入一个组合框,并将其绑定到product_id。组合框的行源将是
select product_id, product_name from tbl_product
将出现此错误消息:'您请求对表进行的更改未成功,因为这些更改会在索引、主键或关系中创建重复值。更改包含重复数据的字段中的数据,删除索引,或重新定义索引以允许重复条目,然后重试">
当您尝试为同一订单添加两次产品时。相反,你应该增加产品的数量。
试试这个,让我们知道它的进展。