Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MS Access创建新订单和订单行_Ms Access_Autonumber - Fatal编程技术网

Ms access MS Access创建新订单和订单行

Ms access MS Access创建新订单和订单行,ms-access,autonumber,Ms Access,Autonumber,我有一个客户表、一个订单表、一个订单行表和一个产品表。它们都有一个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

我有一个
客户
表、一个
订单
表、一个
订单行
表和一个
产品
表。它们都有一个
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...  
我有一个表格,可以在其中选择客户,然后是
订单行
表中的记录列表,以及我从这个子表格中引用的查询,该子表格列出了
订单ID
订单行ID
产品ID
产品详细信息

我有两个问题

  • 所有的订单都会出现,我只想要与这个订单相关联的订单(当表单第一次加载时应该是无订单)

  • 当我输入要添加到新订单的
    产品ID
    时,我希望出现一个新的
    订单ID
    (自动递增)和一个新的订单行ID
    ,(自动递增)以及我所选产品的详细信息,对应于我输入的
    产品ID`,但是,我得到了以下错误消息:

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

    问题是,当我尝试创建新记录时,表应该创建唯一的键,当我直接进入每个表并输入新记录时,自动编号确实起作用,并且确实创建了一个唯一的密钥-它正试图同时创建
    订单ID
    订单行ID
    时,似乎失败了


    我应该说,我花了好几天时间在这上面,搜索了无数搜索引擎,观看了YouTube上关于创建订单的一系列视频,但都没有用。我相信任何了解Access的人都可以帮助我,因为如果这是SQL中的问题,我可以在几分钟内帮助类似情况下的任何人。

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

    关于你的问题。您应该在[order]表中创建一个新的[order]记录,您将在其中输入/选择[customer\u id、staff\u id、order details等]

    一个订单可以有多个项目,因此您的[order_items]表(我假设orderline是您用于此表的术语)存在

    • 订单号
    • 产品标识(订单标识、产品标识复合密钥)
    • 数量
    • 价格
    • 等等
    现在,当您想要开始接受订单时,您需要创建一个绑定到tbl_order的新表单。在frm_订单中,您将有一个子项,从该子项绑定到tbl_订单项(在您的订单行中)

    frm_订单和frm_订单项目应具有关系。通常,当您拖动表以创建子窗体时,ACCESS会要求设置关系。如果手动创建子窗体:

    • 选择子窗体
    • 转到属性页
    • 选择链接主字段:订单\u id
    • 选择链接子字段:订单\u id
    现在,当您打开frm_订单时,它将显示tbl_order_items表中的所有记录(即订单列表中的所有产品)

    您的tbl_order_item/orderline表也通过product_id字段引用product表

    在frm_order_项目中插入一个组合框,并将其绑定到产品id。组合框的行源为

    select product_id, product_name from tbl_product
    
    将出现此错误消息: '您请求对表进行的更改未成功,因为它们将在索引、主键或关系中创建重复的值。更改字段中的数据或包含重复数据的字段,删除索引,或重新定义索引以允许重复条目,然后重试'

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


    试试这个,让我们知道它是如何进行的。

    \1听起来您的查询有问题#2-自动增量ID仅在向ID所属的表中添加记录时有效。您不能向Orders表中添加记录,而输入一个不存在的ProductID,并希望它将ProductID记录添加到Product表中。您的orderline表是什么?你能展示你的db设计吗?谢谢你发明-动画,我会看看我的查询。关于#2-我没有添加产品,只是同时添加了一个订单和一个订单行,该产品已经存在@krish,虽然我不能发布图片,但我会更新我的问题谢谢你krish的帮助,我现在就试试krish,我有更多的信息,当我在我的订单行查询中添加新行时,(包含订单、订单行和产品)它不会在订单或订单行上生成新ID,我收到的错误是因为它正在尝试创建具有相同ID的新产品记录!我不想这样,我想将现有产品添加到新订单中。我如何告诉它不要创建新产品,而是创建新订单添加所选产品?正如我所说的那样,成功了我不熟悉这一点,我没有意识到在查询中从何处提取数据很重要。现在我意识到了这一点,我从Orderline表中提取产品ID,它不再试图将其创建为新产品。