我有一个主窗体,下面有一个子窗体。主窗体有一个“覆盖”选项,我可以在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
答案 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查询直接更新表,则会达到最佳性能,根本不使用记录集。