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

Установка курсора на запись по заданным критериям в ленточной форме (подчиненной форме) - DAO

Public Sub SetFormRecord(frm As Form, Optional strCriteria As String, Optional blToLast As Boolean = False)
'es 22.11.2004 - 04.05.2023 LE - v004
'Производит поиск записи по заданным критериям в форме (подчиненной форме)
'   и ставит фокус на найденную запись - если она найдена
'Если искомое не найдено - переход на Первую или Последнюю запись в зависимости
'   от аргумента blToLast (по умолчанию переход на последнюю запись)
'------------------------------------------------------------------------------
'Примеры эксплуотации:
'   SetFormRecord Forms("СписокЗ"), "КодЗ = " & Me!КодЗ
'В подчинённой форме:
'   SetFormRecord Me!objSubForm.Form, "GoodID = 25"
'------------------------------------------------------------------------------

On Error GoTo SetFormRecordErr
    frm.Painting = False 'Отмена прорисовки формы

    With frm.RecordsetClone
        .FindFirst strCriteria
        If .NoMatch Then   'Если запись не найдена
            If blToLast = True Then
                .MoveLast  'На последнюю запись
            Else
                .MoveFirst 'На первую запись
            End If
        End If
        frm.Recordset.Bookmark = .Bookmark
    End With
    
SetFormRecordBye:
    On Error Resume Next
    frm.Painting = True  'Включаем прорисовку формы
    Set frm = Nothing
    Exit Sub
    
SetFormRecordErr:
    Err.Clear
    Resume SetFormRecordBye
End Sub



Пример использования:

'курсор на конкретную запись ... (objSubForm = название объекта подчинённая форма)
    SetFormRecord Me!objSubForm.Form, "GoodID = 25"

Achtung!
Для объектов подчинённая форма:
Работаем с обьектом Form ("Форма"), а не с объектом "Подчинённая Форма"  т.е. - указание ссылки:
Me![Имя обьекта Подчинённая Форма].Form = обязательно! (или переписываем код ...)

Назад ToTop
L.E. 05.05.2023
Рейтинг@Mail.ru