【问题标题】:Updating record on form更新表格上的记录
【发布时间】:2014-09-25 13:08:26
【问题描述】:

我有一个绑定到查询的表单(只是从表中选择)。

表单上有一个空白日期字段,当用户输入日期并单击“保存”按钮时,我正在运行此 VBA:

If IsDate(Me.PaidDate) = True Then
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "BeneEmployeePaidUnitsUpdateQry"
    DoCmd.SetWarnings True
Else
    Me.Dirty = False
    ' Omitted code
End If

Me.Refresh
Me.Requery

我正在运行的查询只是将另一个表中的字段设置为一个值,但前提是用户正在更新的表中的日期字段(表单上的日期字段)不为空。

现在,连续表单的一个问题似乎是,如果用户仅输入日期并单击“保存”按钮而不执行任何其他操作,则日期不会立即保存到表中并且查询不起作用因为日期字段在被击中时仍然为空。

我试图通过使用 acCmdSaveRecord 来偷工减料,但这似乎不适用于这种情况。

注意:连续表单上的每条记录都有自己的Save 按钮。

为什么我需要在该字段的AfterUpdate 事件上运行acCmdSaveRecord?那是我唯一的选择吗?连续表单是否仅在该记录失去焦点后才对绑定字段执行更新?

【问题讨论】:

  • 是只有一个保存按钮还是每个表单都有自己的?
  • @rontornambe 每个记录/行都有自己的保存按钮。这实际上是该功能所必需的。抱歉,我没有具体说明。
  • select 语句是什么样的?是否包含主键?
  • @rontornambe 我想知道/认为/同意 sql 语句中缺少的 PK 确实是问题所在。我什至在 3 周前阅读了有关此的文档。感谢您的帮助!
  • 不客气。

标签: vba ms-access ms-access-2007


【解决方案1】:

此行为有时可归因于查询中未包含主键的情况。为了更新正确的记录,需要一个主(或唯一)键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多