应该检查代码是否为"年bigins"为空并请求输入,然后检查是否在一岁以上提交的"年bigins"中的日期值,并将其设置为"计数器"提交给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
您缺少实际更新记录集的部分。
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
将始终为null。