我更多地是在寻找建议,以使一些混乱的代码变得更加整洁,并减少一些“垃圾邮件”。
我有一个控件(按钮),该控件将多个值保存到表的多个列中(每列一个值)。这不只是一个问题,而是我在一个控件上处理多个重复命令时正在寻找最佳实践
当前,这是我正在使用的代码,并不是那么糟糕,因为我希望有一种更短的更有效的方法来管理我要完成的工作。
Private Sub cmdSave_Click()
On Error GoTo cmdSave_Click_Err
DoCmd.RunCommand acCmdSaveRecord
MsgBox "Service Record has been saved", vbInformation, ""
DoCmd.Requery "txtFirstHistory"
DoCmd.Requery "txtSecondHistory"
DoCmd.Requery "txtOctoHistory"
DoCmd.Requery "txtInflatorHistory"
DoCmd.Requery "txtHPSPGHistory"
DoCmd.Requery "txtComputerHistory"
Me.txtFirstNotes.Value = ""
Me.txtSecondNotes.Value = ""
Me.txtOctoNotes.Value = ""
Me.txtInflatorNotes.Value = ""
Me.txtHPSPGNotes.Value = ""
Me.txtComputerNotes.Value = ""
cmdSave_Click_Exit:
Exit Sub
cmdSave_Click_Err:
MsgBox Error$
Resume cmdSave_Click_Exit
End Sub
有没有一种方法可以用更少的代码行来完成此任务?
答案 0 :(得分:1)
这似乎是一种很奇怪的处理方式,但是您可能有自己的理由。
您可以使用如下循环:
Dim ctl As Access.Control
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox Then
' Instead of relying on ctl.Name you could also use ctl.Tag
If ctl.Name Like "*History" Then
ctl.Requery
' or DoCmd.Requery ctl.Name
ElseIf ctl.Name Like "*Notes" Then
ctl.Value = ""
End If
End If
Next ctl