【发布时间】:2021-04-24 02:39:44
【问题描述】:
在这个论坛(以及其他论坛)上阅读了很多内容后,我仍然没有找到解决问题的方法。这是一个经典场景:Customer 创建一个Order,而该OrderItems 又具有OrderItems。 所以我的表格如下:
tbl_Customer
cust_Id 为 Long(主键,自动增量)
cust_Name 为字符串
cust_Adress 作为字符串
cust_Phone 作为字符串
等等
tbl_Order
ord_Id as Long(主键,自动增量)
ord_CustId as Long(引用为外键字段cust_Id 在表 tbl_Customer)
ord_Date 作为日期
tbl_OrderItem
oi_OrdId 为 Long(引用为表 tbl_Order 中的外键字段 ord_Id)oi_ArtId 为 Long(引用为表 tbl_Article 中的外键字段 art_Id,在此场景中不相关)
oi_Count 为整数(文章数量) )
oi_Price 为 Double(文章价格)
如您所见,客户和订购的商品之间的关系并不复杂。
除了这些表之外,我在 Access 中创建了一个表单 frmCustomer(基于 tbl_Customer),它拥有一个子表单 frmOrder(基于 tbl_Order)。这两个表单由 cust_Id 和 ord_CustId 字段连接。 子表单 frmOrder 又具有一个子表单 frmOrderItem(基于表 tbl_OrderItem)。它们由 ord_Id 和 oi_OrdId 字段连接。
这些表中插入的一些示例数据显示正确。切换客户会显示其订单和订单项。到目前为止一切顺利。
现在我想插入一个新订单,并向其中添加一些订单项。
如果我单击子表单 frmOrder 的按钮“新建空记录”(记录导航窗格),则会创建一个新的空订单记录,其中包含空字段和空子表单订单项。
当我现在插入一个新的订单项并尝试存储它时,会出现一条错误消息,指出无法存储记录,因为字段 oi_OrdId 不能为空。
确实如此,因为订单记录尚未存储,因此自动递增字段 ord_Id 尚未填充。仅当我编辑迄今为止未触及的订单记录中的一个字段(例如 orderdate)并离开该字段时,该记录才被存储,并且字段 ord_Id 被填充,并且字段 oi_OrdId 格式为 frmOrderItem。
但是,因为字段 ord_CustId(=[Forms]![frmCustomer]![cust_Id],从父表单 frmCustomer 复制的值)和 ord_Date ( =Date() )有默认值,我不想先编辑一个字段。
我想立即输入订购商品。
当我输入子表单 frmOrderItem 的字段时,是否有一个事件(-procedure)可以用来自动保存未触及的订单记录(如何?)?
还是社区中的某个人有一个有用的解决方案?
顺便问一下,有没有办法访问一个新的、尚未保存的记录?
非常感谢您的帮助
ulofb
【问题讨论】:
标签: ms-access-2010 record autosave subform