vba while循环不工作 - 访问表单

时间:2016-10-13 04:11:52

标签: vba ms-access access-vba

我有一个主窗体,下面有一个子窗体。主窗体有一个“覆盖”选项,我可以在txtComments中输入一个值,然后只有当它的复选框有一个真值(例如,检查它)时,它才会在subform.comments字段中输入一个值

目前我正在使用此代码,该代码仅适用于选择的数据行,而不适用于整个子表单数据集:

(注意:我简化了字段和值的名称)

Private Sub Command118_Click()

    Dim rst As Recordset, i As Integer

    Set rst = Subform.RecordsetClone
    i = 0
    rst.MoveFirst
    Do While Not rst.EOF
        i = i + 1
        rst.Edit

        If [SubformCheckbox] = True Then
            [SubformComments] = [txtComments]
        Else
            [SubformComments] = 0
        End If

        rst.Update
        rst.MoveNext
    Loop

    rst.Close
    Set rst = Nothing
End Sub

1 个答案:

答案 0 :(得分:0)

您使用了错误的变量。试试这个:

    If rst![SubformCheckbox] = True Then
        rst![SubformComments] = [txtComments]
    Else
        rst![SubformComments] = 0
    End If

如果您不想触摸未检查的记录,请按以下方式更改循环:

With rst
    Do While Not .EOF
        If ![SubformCheckbox] = True Then
            .Edit
            ![SubformComments] = [txtComments]
            .Update
        End If
        .MoveNext
    Loop
End With

为了提高性能,您可以过滤记录集,只保留选中的行,然后在循环中更新所有记录集,但如果您使用UPDATE SQL查询直接更新表,则会达到最佳性能,根本不使用记录集。