MS Access - 表单尝试在打开时创建新记录并记录关于连续表单的跳转

MS Access - Form tries to create new record on open and record jumps about a continuous form

所以我的数据库有两个问题,我认为它们是相关联的。

首先,如果 tblDeliveries 为空并且 frmMainView 打开,它会出现 "You must enter a value in the 'tblDeliveries.deliverySlot' field" 但该表单不应该尝试创建记录,我看不到任何为什么会这样。打开 frmDailyView(它是 frmMainView 的子形式)不显示此行为,但它是连续形式的...

其次,如果 tblDeliveries 有一个(或多个)行,table 的第一行将跳转......例如在 frmMainView 中,如果第一条记录的日期设置为 23/01/2015 并且你导航到 24/01/2015 并单击子表单上的任意位置然后按 F5 刷新记录将跳转到该日期,该日期甚至更改 tblDeliveries

我不知道它为什么这样做,我什至删除了表单的所有 VBA 代码来阻止它,但它还是发生了。

如果有人以前遇到过类似的问题,请告诉我您是如何解决的,或者任何建议都将非常受欢迎。谢谢!

编辑:如果您下载数据库,请将您的计算机登录名添加到 tblUsers。日期也是英国格式,因此可能需要调整以使用美国日期。

The offending database (1.5MB)

查看您的数据库,出现了几个问题。

您的第一个问题可以通过进入 table tblDeliveries、select deliverySlot[= 的设计视图来解决23=] 字段并将必需(在底部面板中)从是更改为否。

您的第二个问题是多方面的,有很多问题,但一个关键问题是主窗体和子窗体之间的父子 link 字段 deliveryDate在子表单的记录源中丢失,并且字段的 table 来源不在查询的连接语句中。对我来说,我什至无法更新子表单中的任何内容(所有框都变灰)。

本质上,您正在尝试规范化交货日期和交货时间(一对多),但左连接查询 (qryDeliveryIncBlanks) 设置与此效果不一致。您的用户登录也没有顺利集成到 frmMainView。我的最终建议是改造你的数据库设计关系模型,然后使用表单作为那些相​​关 table 的可视化表示。

我不是重复@Parfait 的观点。

访问表单有 属性 DataEntry。如果它设置为 Yes(或 VBA 中的 True),则表单将自行打开并指向一个新的空数据记录。将此 属性 设置为 No(VBA 中的 False)。

如果您想让用户可以手动输入新记录,请将 属性 AllowAdditions 设置为 Yes,否则设置为 NoYes 显示标有星号 * 和数据结尾 sheet 或连续形式的空记录。

我已经解决了这个问题,多亏了一些评论我意识到我可以给 deliverySlot 字段一个默认值,其中的数字超出了它要查找的范围,我将它设置为99,但它只查找 1-20。日期仍然跳来跳去,但由于它不在查询范围内,所以它被隐藏了。它解决了这两个问题。