该代码应该检查是否存档" YearBigins"为空并请求输入然后检查" YearBigins"中的日期值是否为在超过一年的时间内提交并在"计数器中设置值#34;归档为0.我有以下代码但不起作用:
Private Sub Form_Load()
Me.Caption = Date
YearBegins_AfterUpdate
End Sub
Private Sub YearBegins_AfterUpdate()
Dim rst As Recordset
Do While Not rst.EOF
If IsNull(rst.Fields("YearBegins").Value) Then
YearBegins = InputBox("Please Enter the Beginning of counter Year Date as:
dd/mm/yyyy")
Else: YearBegins = YearBegins.Value
End If
rst.MoveNext
If (DateTime.Now - YearBegins.Value) < 365 Then
counter.Value = 0
End If
Loop
End Sub
答案 0 :(得分:2)
您错过了实际更新记录集的部分。
Private Sub Form_Load()
Me.Caption = Date
YearBegins_AfterUpdate
End Sub
Private Sub YearBegins_AfterUpdate()
Dim rst As Recordset
Do While Not rst.EOF
If IsNull(rst.Fields("YearBegins").Value) Then
YearBegins = InputBox("Please Enter the Beginning of counter Year Date as: dd/mm/yyyy")
rst.Edit '<---
rst("YearBegins") = cdate(YearBegins) '<---
rst.Update '<---
Else
YearBegins = YearBegins.Value
End If
rst.MoveNext
If (DateTime.Now - YearBegins.Value) < 365 Then
counter.Value = 0
End If
Loop
End Sub
据说有更好的方法可以做到这一点。您可以打开另一个表单,其中只包含您要更新的数据,这样您就可以为用户提供一些上下文。只是拥有一个没有数据验证的弹出对话框,他们甚至不会真正看到他们正在更新的记录。他们如何知道要放入什么价值?
如果您可以将YearBegins_AfterUpdate
中的代码重构为新函数并从Form_Load
调用该代码而不是调用YearBegins_AfterUpdate
之类的事件处理程序,那会更好。
我不知道你在哪里设置rst
。您从Dim rst As Recordset
转到使用它,但鉴于您提供的代码rst
将始终为空。