ms-access-2010 - 如何保存未触及的新记录
问题描述
在这个论坛(以及其他论坛)上阅读了很多之后,我仍然没有找到解决我问题的方法。这是一个经典场景:客户创建一个订单,而订单又拥有OrderItems。所以我的表格如下:
tbl_Customer
cust_Id as Long(主键,自动增量)
cust_Name as String
cust_Adress as String
cust_Phone as String
等
tbl_Order
ord_Id as Long(主键,自动增量)
ord_CustId as Long(引用为表 tbl_Customer 中的外键字段 cust_Id ) ord_Date as Date
tbl_OrderItem
oi_OrdId as Long(引用为表tbl_Order中的外键字段ord_Id)oi_ArtId as Long(引用为表 tbl_Article 中的外键字段 art_Id,在此场景中不相关)oi_Count as Integer(文章数量)oi_Price as Double (物品价格)
如您所见,客户和订购的商品之间的关系并不复杂。
除了这些表之外,我在 Access 中创建了一个表单frmCustomer(基于 tbl_Customer),它拥有一个子表单frmOrder(基于 tbl_Order)。这两种形式由cust_Id和ord_CustId字段连接。SubForm frmOrder又具有一个 subForm frmOrderItem(基于表 tbl_OrderItem)。它们通过字段ord_Id和oi_OrdId连接。
这些表中插入的一些示例数据显示正确。切换客户会显示其订单和订单项。到目前为止,一切都很好。
现在我想插入一个新订单,并向其中添加一些订单项。如果我单击子表单 frmOrder 的按钮“新建空记录”(记录导航窗格),则会创建一个新的空订单记录,其中包含空字段和空子表单订单项。当我现在插入一个新的订单项并尝试存储它时,会出现一条错误消息,说无法存储记录,因为字段oi_OrdId不能为空。这是真的,因为订单记录尚未存储,因此自动递增字段ord_Id尚未填充。只有当我编辑迄今为止未触及的订单记录中的一个字段(例如 orderdate)并离开该字段时,才会存储该记录,并填充字段ord_Id以及表单frmOrderItem中的字段oi_OrdId。
但是,因为字段ord_CustId (=[Forms]![frmCustomer]![cust_Id], 从父表单frmCustomer复制的值) 和ord_Date ( =Date() ) 具有默认值,我不想先编辑字段. 我想立即输入订单项。
当我输入子表单frmOrderItem的字段时,是否有一个事件(-procedure)可以用来自动保存未触及的订单记录(如何?)?或者社区中的某个人有一个有用的解决方案?
顺便说一句,有没有办法访问一个新的、尚未保存的记录?
非常感谢您的帮助
ulofb
解决方案
现在我想插入一个新订单,并向其中添加一些订单项。如果我单击 subForm frmOrder 的按钮“新建空记录”(记录导航窗格)
不。反过来做。阻止记录在子表单中插入新订单记录。插入/保存订单表单后,在子表单中启用记录插入。
推荐阅读
- javascript - 正则表达式忽略文件扩展名模式 xxx.html vs xxx.prod.html
- reactjs - Reactjs 中的 App_initializer 类似于 Angular 或加载 json 文件以进行运行时配置
- android-emulator - AOSP 版本未在供应商文件夹中进行最新更改
- csvhelper - 使用 .Constant() 与 CsvHelper 进行错误映射
- apache-kafka - 无法从远程机器与 Kafka 集群通信
- google-cloud-firestore - 在 MobX 中正确同步 Firestore 集合
- hyperledger-fabric - 新加入的组织中的 Hyperledger Fabric 链码实例化失败
- database - LINQPad 使用哪些信息来生成关联属性/导航属性?
- python - Sqlite 到 csv 到 excel 转换不在列中插入值
- java - 在 Xpages 中。如何将 serviceBean(由 extlib REST 服务调用)中的值传递回注释文档