【问题标题】:Update a text Field's value based on another date field passing a certain date根据传递特定日期的另一个日期字段更新文本字段的值
【发布时间】:2018-12-13 20:41:52
【问题描述】:

对于我的 Access 数据库,我有一个包含两个字段的单数表 - 奖励状态和建议的截止日期。我希望在提议的截止日期过后,奖励状态更改为“待定”。

目前,我正在编写 VBA,以便在满足条件后更新字段。

Function AwardUpdate()

    Dim rstInput As DAO.Recordset
    Set rstInput = CurrentDb.OpenRecordset("TestInput")

    With rstInput
        Do Until .EOF
            .Edit
            If .Fields(19) < Date And .Fields(29) = "Pre-Submission" Then
                .Fields(29) = "Pending"
                .MoveNext
            Else
                .MoveNext
            End If
        Loop
    End With

End Function

但我似乎无法获得检查建议到期日期是否小于当前日期的标准。

有没有更好的方法来做到这一点?

【问题讨论】:

  • 那么您的 IF 中有 2 个标准。您是否对它们进行了单独测试以查看哪个失败了?另外,你什么时候运行这段代码?它需要以某种方式触发。
  • @HackSlash 是的,我已经单独测试过它们。约会失败,这是我主要想弄清楚的。我目前正在模块编辑器中运行此代码。目标是让它在数据库打开/关闭时运行,这样最终用户就不必按下按钮。
  • If 语句之前添加Debug.print .Fields(19)Debug.print Date -- 这些值是否符合您的预期?
  • 缺少 .Update 命令。 .Edit 应该在 if 块内。 MoveNext 应该从 if 块中出来。另外,为什么要循环?为什么不是标准的 SQL 更新命令?

标签: ms-access vba auto-update ms-access-2016


【解决方案1】:

这应该有效 - 仅在需要时进行编辑:

   Do Until .EOF
       If .Fields(19).Value < Date And .Fields(29).Value = "Pre-Submission" Then
           .Edit
               .Fields(29).Value = "Pending"
           .Update
       End If
       .MoveNext
   Loop

【讨论】:

  • 这正是我想要的!非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 2018-10-09
  • 2020-07-15
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多