我在主窗体上有一个命令按钮,当单击该按钮时,在子窗体的显示记录上运行一个循环,并更改该字段中所有数据的值,以匹配主窗体上未绑定组合框的值。这样,用户可以选择一次更新子窗体上的多个记录。代码工作正常但如果可以更改为仅更新字段(如果每个记录为空),则会更有用。换句话说,我希望它检查每个记录是否有该字段的空白,然后根据组合框填充它,如果它不为空或空,则跳到下一条记录。 这就是代码现在的样子。我对访问VBA并不是很了解,我不确定是否应该使用“Case”或“If”或者如何将它与下面的代码一起使用。
Private Sub comm_1_Click()
Dim rs As DAO.Recordset
Set rs = Me.Skid1.Form.RecordsetClone
With rs
.MoveFirst
Do While Not .EOF
.Edit
![Release Code] = Me.code_updater.Value
.Update
.MoveNext
Loop
End With
Set rs = Nothing
End Sub
我试过这个,但它似乎只更新了一些空白记录(非常奇怪),我很确定它接近但不完全。
Private Sub comm_1_Click()
Dim rs As DAO.Recordset
Dim fld As Field
Set rs = Me.Skid1.Form.RecordsetClone
With rs
.MoveFirst
Do While Not .EOF
For Each fld In .Fields
If IsNull(fld.Value) Then
.Edit
![Release Code] = Me.code_updater.Value
.Update
End If
.MoveNext
Next
Loop
End With
Set rs = Nothing
End Sub
答案 0 :(得分:0)
这有什么不同吗?它检查空白字段以及NULL字段 - 是的,它们是两个不同的东西!
Private Sub comm_1_Click()
Dim rs As DAO.Recordset
Dim fld As Field
Set rs = Me.Skid1.Form.RecordsetClone
With rs
.MoveFirst
Do While Not .EOF
For Each fld In .Fields
If (IsNull(fld.Value) Or fld.Value = "")Then
.Edit
![Release Code] = Me.code_updater.Value
.Update
End If
.MoveNext
Next
Loop
End With
Set rs = Nothing
End Sub
答案 1 :(得分:0)
我怀疑你想要
Private Sub comm_1_Click()
Dim rs As DAO.Recordset
Dim fld As Field
Set rs = Me.Skid1.Form.RecordsetClone
With rs
.MoveFirst
Do While Not .EOF
''Anything, space filled, null, ZLS
If Trim(![Release Code] & "") = "" Then
.Edit
![Release Code] = Me.code_updater.Value
.Update
End If
.MoveNext
Loop
End With
Set rs = Nothing
End Sub
我建议你编辑你的表,并确保它不接受零长度字符串,方法是将文本数据类型的Allow Zero Length属性设置为No。