Обновление Me.txtWhwhat.Value & DoCmd.Requery для нескольких полей одновременно - PullRequest
0 голосов
/ 29 января 2019

Я больше обращаюсь за советом, чтобы укрепить некоторые загроможденные коды с некоторыми идеями, чтобы обрезать его и сделать его немного менее спамовым.

У меня есть элемент управления (кнопка), который сохраняет несколькозначения для нескольких столбцов в таблице (одно значение для каждого столбца).Это не столько проблема, сколько проблема в том, что я ищу лучшие практики при работе с несколькими повторяющимися командами на одном элементе управления

В настоящее время это код, который я использую, но это не так ПЛОХОКак бы я ни надеялся, был более короткий и эффективный способ управления тем, что я пытаюсь выполнить.

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

Есть ли способ сделать это с меньшим количеством строк кода?

1 Ответ

0 голосов
/ 29 января 2019

Это кажется очень странным способом ведения дел, но у вас могут быть свои причины.

Вы можете использовать цикл вроде этого:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...