- •Объекты в vba
- •Установка фокуса
- •Поиск записи
- •Понятие события
- •Создание процедур событий
- •События при обновлении данных в элементах управления
- •Статические переменные
- •Выполнение типовых операций в Access
- •Работа с таблицами
- •Работа с формами Использование различных конструкций для упрощения программирования и ускорения обработки данных в форме
Работа с формами Использование различных конструкций для упрощения программирования и ускорения обработки данных в форме
Чтобы обратиться к определенному свойству формы, можно использовать операторы следующего типа. Например, объект Me. Он может использоваться для обращения к любому объекту, открытому в данный момент.
Me.Кнопка2.Visible = False
Me. Кнопка3.Enabled = True
или
Forms!Кнопки!Кнопка2.Visible = False
Forms!Кнопки!Кнопка3.Enabled = False
Это очень неудобный способ обращения к элементам управления. Каждый раз, когда выполняется оператор, ссылающийся на форму, Access должен искать форму в списке всех форм базы данных. Поиск выполняется по алфавиту, и Access просматривает каждое значение пока не найдет форму, на которую ссылается оператор.
Существует более эффективный способ: определите переменную как тип формы и используйте ее для обращения к элементам управления.
DIM frmControl As Form
Set frmControl = Forms!Кнопки
frmControl! Кнопка2.Visible = True
frmControl! Кнопка3.Visible = True
При использовании такого варианта программы переменная формы задается один раз, и ссылаются на нее тоже один раз. При обращении к переменной frmControl Access известно, где искать форму в списке. Фактически, создается индекс, что позволяет намного увеличить скорость работы программы.
Однако, самый лучший способ обращения к формам – использование конструкции With … End With
With Forms!Кнопки
! Кнопка2.Visible = True
! Кнопка3.Visible = True
End With
Как видно из примера, переменная формы определяется в операторе With, причем перед каждым элементом управления ставится символ ! Все операторы в конструкции ссылаются на значение, указанное в операторе With.
********форма Финансовый результат ********************
Private Sub Form_Open(Cancel As Integer)
Me.подчиненная_форма_Фин_Рез.Visible = False
Me.подчиненная_форма_Фин_рез_руб1.Visible = False
Me.Надпись15.Visible = False
Me.Поле14.Visible = False
End Sub
Private Sub Переключатель16_Click()
Me.Переключатель16.Value = -1
Me.Переключатель18.Value = 0
Me.подчиненная_форма_Фин_Рез.Visible = True
Me.подчиненная_форма_Фин_рез_руб1.Visible = False
Me.Надпись15.Visible = False
Me.Поле14.Visible = False
End Sub
Private Sub Переключатель18_Click()
Me.Переключатель18.Value = -1
Me.Переключатель16.Value = 0
Me.подчиненная_форма_Фин_Рез.Visible = False
Me.Надпись15.Visible = True
Me.Поле14.Visible = True
End Sub
Private Sub Поле14_AfterUpdate()
Me.подчиненная_форма_Фин_рез_руб1.Requery
Me.подчиненная_форма_Фин_рез_руб1.Visible = True
End Sub
Private Sub Поле14_Click()
Me.подчиненная_форма_Фин_рез_руб1.Requery
Me.подчиненная_форма_Фин_рез_руб1.Visible = True
End Sub
Private Sub ПолеСоСписком10_AfterUpdate()
' Поиск записи, соответствующей этому элементу управления.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[ns] = '" & Me![ПолеСоСписком10] & "'"
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub