MS Access创建新订单和订单行

时间:2015-04-22 14:35:25

标签: ms-access autonumber

我有一个Customer表,一个Order表,一个Orderline表和一个Product表。所有这些字段都有Autonumber字段作为主键,而OrderlineOrder 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 IDProduct ID ...

我有两个问题。

  1. 显示所有订单,我只想要与此订单关联的订单(首次加载表单时,该订单应为无。)

  2. 当我输入要添加到新订单的Product details时,我希望显示新的Product ID,(自动增加)和新的订单行ID {{1}我已输入产品ID,但我收到此错误消息:

  3.   

    您向表请求的更改未成功,因为它们会在索引,主键或关系中创建重复值。更改包含重复数据的字段或字段中的数据,删除索引或重新定义索引以允许重复条目,然后重试

    问题是,当我尝试创建新记录时,表应该创建我唯一的键,当我直接进入每个表并输入新记录时,自动编号确实起作用并创建一个唯一的键 - 它是就在它试图同时创建Order ID, (Autoincremented) and the details of the product that I have selected, corresponding to the同时它似乎失败的时候。

    我应该说,我花了好几天的时间,搜索了无数的搜索引擎,观看了关于创建订单表格的全系列YouTube视频,但无济于事。任何了解Access的人我肯定能够帮助我,因为如果这是SQL中的问题,我可以在几分钟内帮助处于类似情况的任何人。

1 个答案:

答案 0 :(得分:0)

创建子表单时,必须指定父表单和子表单之间的关系。您为表创建的相同关系。然后只有Access会为您过滤记录。

关于你的问题。您应该在[order]表中创建一个新的[订单]记录,您将在其中输入/选择[customer_id,staff_id,订单详情等]

一个订单可以包含多个商品,因此您的[order_items]表(我假设订单行是您对此表使用的术语)存在

  • order_id
  • product_id(order_id,product_id复合键)
  • 等。

现在,当您想要开始接受订单时,您需要创建一个绑定到tbl_order的新表单。在frm_order中你将有一个sub-from绑定到tbl_oder_items(在你的情况下是订单行)

frm_order和frm_oder_items应该有关系。通常当你拖动表来创建子表单时,ACCESS会要求设置关系。如果您手动创建子表单:

  • 选择子表单
  • 转到物业表
  • 选择链接主字段:order_id
  • 选择链接子字段:order_id

现在,当您打开frm_order时,它将显示tbl_order_items表中的所有记录(换句话说,订单在其列表中的所有产品)。

您的tbl_order_item / orderline表也通过product_id字段引用产品表。

在frm_order_items中插入一个组合框并将其绑定到product_id。组合框的行源将是

select product_id, product_name from tbl_product

将出现以下错误消息: '您向表请求的更改未成功,因为它们会在索引,主键或关系中创建重复值。更改包含重复数据的字段或字段中的数据,删除索引或重新定义索引以允许重复输入并再次尝试

当您尝试为同一订单添加两次产品时。相反,你应该增加产品的数量。

试试这个,让我们知道它是怎么回事。