【问题标题】:MS Access - Form tries to create new record on open and record jumps about a continuous formMS Access - 表单尝试在打开时创建新记录并记录关于连续表单的跳转
【发布时间】:2015-01-24 08:16:53
【问题描述】:

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

首先,如果tblDeliveries 为空并且frmMainView 打开它会出现“您必须在'tblDeliveries.deliverySlot' 字段中输入一个值”但表单不应该尝试创建记录,我可以看不出有什么理由。打开 frmDailyView(它是 frmMainView 的子形式)不会显示此行为,但它是具有连续形式的行为...

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

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

如果有人以前遇到过这样的事情,请告诉我你是如何解决的,或者任何建议都非常受欢迎。谢谢!

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

The offending database (1.5MB)

【问题讨论】:

  • 恐怕是我创造的。
  • 备份是在我修改一些控件时进行的,它可能也遇到了问题,但我最近才注意到它。

标签: ms-access vba ms-access-2010


【解决方案1】:

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

您的第一个问题可以通过进入表 tblDeliveries 的设计视图来解决,选择 deliverySlot 字段并将Required(在底部面板中)从 Yes 更改为 No .

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

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

【讨论】:

  • 我做了一对多,这样我就可以填充表单,而不必为每个时间段生成每条记录。在 07:00 时双击事件会生成一个新条目,该条目解锁灰色控件。如您所见,它仍在进行中。
【解决方案2】:

我不会重复@Parfait 的观点。

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多