每次表格加载时,都会循环整个记录



应该检查代码是否为"年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。

最新更新