【发布时间】: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