-1

我有一张Customer桌子,一张Order桌子,一张Orderline桌子和一张Product桌子。它们都有一个Autonumber字段作为它们的主键,并且在表上Orderline有一个外键引用:Order IDOrder

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...

我有2个问题。

  1. 所有订单都会出现,我只想要与此订单相关联的订单(第一次加载表单时应该没有)。

  2. 当我输入Product ID要添加到新订单中的内容时,我希望Order ID会出现一个新订单(自动递增)和我输入的新订单行 ID, (Autoincremented) and the details of the product that I have selected, corresponding to the产品 ID,但我收到以下错误消息:

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

问题是,当我尝试创建新记录时,表应该为我创建唯一键,当我直接进入每个表并输入新记录时,自动编号确实有效并创建了一个唯一键 - 只是当它正在尝试创建似乎失败的theOrder ID和 the 。Orderline ID

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

4

1 回答 1

0

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

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

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

  • order_id
  • product_id (order_id, product_id 组合键)
  • 数量
  • 价格
  • ETC..

现在,当您想开始接受订单时,您需要创建一个绑定到 tbl_order 的新表单。在 frm_order 您将有一个绑定到 tbl_oder_items 的子(在您的情况下为 orderline)

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

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

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

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

于 2015-04-22T15:23:24.627 回答