VBA, MS Access MS Access в примерах

Обработка всех полей формы ... или о пользе префиксов в названиях объектов.

Есть некий документ - в данном случае просто форма, в котором находятся некие данные плюс реквизиты некого предприятия (Банковские там и пр....)
Задача:
     "Зачистить" (то есть задать значение NULL) этим реквизитам, и только им - остальные поля оставить как есть.
Причем:
     В отличии от остальных полей формы, название каждого "зачищаемого" поля реквизитов начинается с "Rec" ( "RecName" =Название предприятия, "RecBank"= Название банка и т.д.) , если нет то следует привести поля под это правило.
Тогда:
...код зачистки будет выглядеть примерно так:

Dim MyControl As Control
Dim MyControlName As String
'цикл по обработке всех обьектов формы
    For Each MyControl In Me.Controls 
        With MyControl
            MyControlName = .Name
            'проверка имени тек. обьекта
            If Left(MyControlName, 3) = "Rec" Then 
                 'если это поле реквизитов то меняем значение 
                .Value = Null
            End If
        End With
Next MyControl

Второй вариант решения такой-же задачки

Прислал Алексей :  alexblack@yandex.ru  

Private Sub ClearControls(strName As String, strPref As String, bolPosition As Boolean)
'strName - имя формы, strPref - префикс (условие) поиска,
' bolPosition - расположение в названии (true -слева, false-справа)
Dim ctrl As Control
Dim ctrlName As String
    'цикл по обработке всех обьектов формы
    For Each ctrl In Forms(strName).Controls
        With ctrl
            ctrlName = .Name
            'проверка имени тек. обьекта
            If bolPosition = True Then
            If Left(ctrlName, Len(strPref)) = Trim(strPref) Then
                 'если это то поле что подходит по условию
                .Value = Null
            End If
            ElseIf bolPosition = False Then
            If Right(ctrlName, Len(strPref)) = Trim(strPref) Then
                 'если это то поле что подходит по условию
                .Value = Null
            End If
            End If
        End With
Next ctrl
End Sub
Назад ToTop
L.E. 19.01.2021
Рейтинг@Mail.ru