我有一个Customer
表,一个Order
表,一个Orderline
表和一个Product
表。所有这些字段都有Autonumber
字段作为主键,而Orderline
在Order ID
表上有Order
的外键引用:
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
,{ {1}},Orderline ID
,Product ID
...
我有两个问题。
显示所有订单,我只想要与此订单关联的订单(首次加载表单时,该订单应为无。)
当我输入要添加到新订单的Product details
时,我希望显示新的Product ID
,(自动增加)和新的订单行ID {{1}我已输入产品ID,但我收到此错误消息:
您向表请求的更改未成功,因为它们会在索引,主键或关系中创建重复值。更改包含重复数据的字段或字段中的数据,删除索引或重新定义索引以允许重复条目,然后重试
问题是,当我尝试创建新记录时,表应该创建我唯一的键,当我直接进入每个表并输入新记录时,自动编号确实起作用并创建一个唯一的键 - 它是就在它试图同时创建Order ID
和, (Autoincremented) and the details of the product that I have selected, corresponding to the
同时它似乎失败的时候。
我应该说,我花了好几天的时间,搜索了无数的搜索引擎,观看了关于创建订单表格的全系列YouTube视频,但无济于事。任何了解Access的人我肯定能够帮助我,因为如果这是SQL中的问题,我可以在几分钟内帮助处于类似情况的任何人。
答案 0 :(得分:0)
创建子表单时,必须指定父表单和子表单之间的关系。您为表创建的相同关系。然后只有Access会为您过滤记录。
关于你的问题。您应该在[order]表中创建一个新的[订单]记录,您将在其中输入/选择[customer_id,staff_id,订单详情等]
一个订单可以包含多个商品,因此您的[order_items]表(我假设订单行是您对此表使用的术语)存在
现在,当您想要开始接受订单时,您需要创建一个绑定到tbl_order的新表单。在frm_order中你将有一个sub-from绑定到tbl_oder_items(在你的情况下是订单行)
frm_order和frm_oder_items应该有关系。通常当你拖动表来创建子表单时,ACCESS会要求设置关系。如果您手动创建子表单:
现在,当您打开frm_order时,它将显示tbl_order_items表中的所有记录(换句话说,订单在其列表中的所有产品)。
您的tbl_order_item / orderline表也通过product_id字段引用产品表。
在frm_order_items中插入一个组合框并将其绑定到product_id。组合框的行源将是
select product_id, product_name from tbl_product
将出现以下错误消息: '您向表请求的更改未成功,因为它们会在索引,主键或关系中创建重复值。更改包含重复数据的字段或字段中的数据,删除索引或重新定义索引以允许重复输入并再次尝试
当您尝试为同一订单添加两次产品时。相反,你应该增加产品的数量。
试试这个,让我们知道它是怎么回事。