Green-sell.info

Новые технологии
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Access обработка событий

СОБЫТИЯ В ACCESS

Access является системой, управляемой событиями. В качестве значений свойств событий можно задавать либо макрос, либо процедуру Visual Basic.

Хотя изучение Visual Basic выходит за рамки данного учебника, хотелось бы отметить, что в последние годы он стал общим языком программирования для приложений Microsoft Office.

События, связанные с клавиатурой и мышью:

• нажатие кнопки мыши;

• двойное нажатие кнопки;

• кнопка вниз — это событие фиксируется в тот момент, когда

пользователь нажал и еще не успел отпустить кнопку;

• кнопка вверх — момент отпускания кнопки мыши;

• перемещение указателя — перемещение указателя мыши пользователем;

• нажатие клавиши — нажатие любой клавиши на клавиатуре;

• клавиша вниз — момент нажатия клавиши на клавиатуре;

• клавиша вверх — момент, когда нажатая клавиша отпущена. События данных:

• До обновления. Это событие возникает, когда пользователь внес изменения в элемент управления или запись, но обновление данных еще не успело произойти. Обработка этого события — последняя возможность отменить изменение.

• После обновления. Это событие возникает после обновления данных в элементе управления или записи.

• Удаление. Момент удаления записи пользователем, но до подтверждения и фактического удаления записи.

• До подтверждения Del. После того как пользователь удаляет одну или несколько записей, программа открывает окно диалога для запроса подтверждения. Это событие соответствует моменту, когда записи пользователем уже удалены, но окно диалога еще не открыто. Данному событию предшествует событие «Удаление».

• После подтверждения Del. Событие фиксируется после того, как пользователь подтвердил удаление записей или отменил его.

• До вставки. Ввод первого символа в новую запись, но до добавления записи в базу данных.

• После вставки. Добавление новой записи в базу данных.

• Изменение. Изменение содержимого поля.

• Текущая запись. Выбор записи или выполнение повторного запроса к источнику данных формы.

• Отсутствие в списке. Ввод в поле со списком значения, отсутствующего в списке. Такое событие всегда возникает «по вине» пользователя, и его (события) обработка может повысить степень «дружественности» приложения.

• При обновлении. Изменение данных в объекте OLE.

События управления объектами:

• Включение. Активизация окна формы или отчета.

• Отключение. Закрытие окна формы или отчета.

• Вход. Момент перед получением фокуса элементом управления или формой.

• Получение фокуса. Получение фокуса элементом управления или формой.

• Выход. Момент перед переводом фокуса на другой элемент управления.

• Потеря фокуса. Потеря фокуса элементом управления или формой.

• Открытие. Начальный момент открытия формы или отчета.

• Загрузка. Открытие формы. Соответствует моменту вывода данных в форме, но после возникновения события «Открытие».

• Изменение размера. Изменение размера формы.

• Выгрузка. Момент закрытия формы до ее удаления с экрана. За этим событием следует «Закрытие».

• Закрытие. Закрытие формы или отчета.

• Ошибка. Ошибка при работе с формой. Пользователь использовал фильтр.

• Фильтрация. Создание пользователем фильтра.

• Таймер. Истечение промежутка времени, указанного в свойстве «Интервал таймера» формы.

• Форматирование. Начальный момент подготовки отчета. Данные еще не готовы для просмотра или печати.

• Отсутствие данных. Это событие возникает, если в результате форматирования не были выбраны данные для отчета.

• Страница. Сформатирована страница отчета для печати.

• Печать. Сформатирован раздел отчета для печати.

• Возврат. Переход назад по разделам отчета.

В качестве примера использования макроса рассмотрим макрос набора элементов «Отбор клиентов» формы «Телефоны клиентов». Форма «Телефоны клиентов» (рис. 4.10.2) предназначена для вывода данных о клиентах; для ускорения нахождения данных о конкретном клиенте на форме выведены кнопки с буквами алфавита, при нажатии на которые выводятся данные о клиентах, название которых начинается на эту букву. По событию «После обновления» выполняется макрос «Телефоны клиентов», который показан на рис. 4.10.3. Поскольку макрос достаточно велик, а строки его однотипны, показаны начало и конец макроса. Каждой кнопке как имя присвоен номер, в условии макроса сравнивается значение выбранного элемента с именем кнопки и работает соответствующий фильтр.

Рис. 4.10.3. Макрос «Телефоны клиентов» в режиме конструктора

Рис. 4.10.2. Форма «Телефоны клиентов»

Аргумент Простой макрос

Макрокоманда Сложный макрос

Вопросы для самоконтроля

1. Опишите процесс создания макроса.

2. Как могут использоваться макросы?

1. Какой макрос выполняется при загрузке приложения?

Читать еще:  Объединение двух таблиц в access

2. Как добавить условие в макрос?

3. Какие элементы управления требуют наличия макроса?

Задания для самостоятельной работы

1. Создайте простые макросы для открытия формы и для вывода сообщения.

2. Создайте сложный макрос с условием, обеспечивающий работу переключателя.

СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

1. Вейскас Дж. Эффективная работа с ACCESS 2000. — СПб.: Питер, 2000. — C 698-728.

2. Аникина HKf Шевцова НА. Система управления базами данных MicrosoftACCESS. — M.: РУДН, 2000. — С. 75-78.

3. Джонс ЭДжонс Дж. Access 97. Книга ответов. — СПб.: Питер, 1998. — С. 307-322.

4. Король В.И. MS Access. Разработка приложений. —M.: ПРИОР, 1998.-С. 164-168.

5. Новиков Ф.у Яценко A. Microsoft® Office XP в целом. — СПб.: БХВ — Петербург, 2002. — С. 314-316.

Процедуры VBA обработки событий объектов Access

Программирование VBA событий объектов в формах и отчетах

Как правило, формы и отчеты в Access создаются с помощью конструктора и мастера построения, т.е. без применения VBA. Но для автоматизации действий над объектами в формах и отчетах используются программы на языке VBA. Действия над объектами в формах и отчетах основаны на событиях объектов. Следует отметить, что созданные процедуры обработки событий объектов обычно хранятся в модулях форм или отчетов.

В качестве примера рассмотрим программирования действий над объектами в форме «Студенты» базы данных «Training_students_O_F«. Создадим в этой форме поисковую систему с помощью текстового поля с именем «Образец» (надпись «Образец поиска») и кнопки «Поиск». То есть выполним поиск реквизитов студента в списке формы при вводе конкретной фамилии студента в текстовое поле «Свободный» под надписью «Образец поиска» и щелчке на кнопке «Поиск». Для этого откроем форму «Студенты» в режиме конструктор (рис 1).

Затем щелкнем на кнопке Поиск правой кнопкой мыши и в контекстном меню выберем команду «Свойства». Откроется диалоговое окно «Кнопка» перейдем на вкладку «События». Для события «Нажатие кнопки» выберем из раскрывающегося списка «Процедура обработки событий» и щелкаем на кнопке Построитель (кнопка с тремя точками). Откроется окно редактора VBA. В окне редактора кода будет отображаться первый и последний операторы процедуры обработки событий Click для кнопки Поиск (рис.2).

Процедуру обработки событий или инструкцию VBA, которая должны быть заключена между этими операторами, мы можем написать непосредственно в окне редактора кода. Вначале запишем переход к текстовому полю «Фамилия», в котором будет выполняться поиск, т.е. применим метод SetFocus, который устанавливает фокус на элемент управления, вызвавший этот метод. Эта инструкция имеет следующий вид: Фамилия.SetFocus.

Для запуска действия «Найти запись» по «Образцу поиска» воспользуемся методом FindRecord объекта DoCmd. Эта инструкция может быть представлена в следующем виде: DoCmd.FindRecord Образец. В результате процедура обработки событий имеет следующий код, представленный на скриншоте редактора кода VBA, рис. 3.

Данная процедура обработки события «Поиск_Click» (Нажатие кнопки) может применяться только внутри формы «Студенты». После создания процедуры обработки события нажатия кнопки (Поиск_Click) закрываем редактор кода и форму в режиме конструктора. Затем открываем форму «Студенты» в режиме формы, выполнив щелчок по кнопке Открыть. Вводим фамилию в текстовое поле под надписью «Образец поиска», например, Петрова и нажимаем кнопку Поиск. В строке «Фамилия» будет отображаться искомая фамилия Петрова, а в остальных полях все ее реквизиты.

Таким образом, на конкретном образце формы «Студенты» базы данных Access 2003 (Training_students_O_F) было рассмотрено, как реализуются программы на языке VBA для автоматизации действий над объектами формы.

Copyright

© Обучение в интернет, .
Обратная связь

Создание процедур обработки событий

Разработчикам приложений ACCESS нужен набор процедур для отклика на различные события, например, внесение изменений в поле или щелчок на кнопке. Код процедуры обработки события привязывается к событию, которое может произойти при работе с формой, отчетом или элементом управления. Результат выполнения процедуры-функции обычно применяется:

  • в качестве значения по умолчанию для поля таблицы;
  • в качестве значения критерия для запросов или фильтров;
  • в качестве содержимого поля.

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

  1. Открыть нужную форму или отчет в режиме конструктора. Если необходимо привязать процедуру к элементу управления, выбрать этот элемент.
  2. Открыть окно свойств формы, отчета или элемента управления.
  3. Открыть вкладку События.
  4. Выполнить щелчок на строке свойства того события, которое должно запускать процедуру. Например, если процедура должна запускаться в ответ на изменение пользователем данных, выполнить щелчок на свойстве После обновления.
  5. Выполнить щелчок по кнопке с тремя точками, чтобы открыть диалоговое окно Построитель.
  6. В этом окне выполнить двойной щелчок мышью на строке Программы. Откроется окно редактора Visual Basic, в котором автоматически появится начальная и конечная строки процедуры.
  7. Ввести операторы, образующие код процедуры.
Читать еще:  Access формат времени

Для повышения удобочитаемости кода процедуры, вводимого между ограничительными операторами, применяют приемы структурирования. Один из таких приемов заключается в том, что все операторы процедуры записываются с отступом от начала строки. Для создания отступа можно использовать клавишу Tab. По умолчанию позиции табуляции установлены через четыре символа.

Посредством отступов выделяют вложенные циклы и условные операторы внутри процедуры.

Тексты программ принято снабжать комментариями. В начале каждой строки комментария ставится апостроф, и такие строки не влияют на выполнение программы, а при синтаксическом анализе и компилировании — пропускаются. Наряду с отступами ACCESS позволяет использовать различные шрифты и цвета для выделения фрагментов текста модуля.

Редактирование в окне модуля

Код модуля и тексты подпрограмм/функций редактируются также как документы в обычном текстовом редакторе. Для поиска процедуры в тексте модуля используется список процедур, находящийся в верхней части окна модуля.

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

В ACCESS при редактировании фрагментов кодов кроме общепринятых используются дополнительные комбинации клавиш: Ctrl + Y позволяет вставить в буфер строку, в которой находится курсор, не выполняя его маркировку; F3 и Shift + F3 позволяют просмотреть все фрагменты модуля, в которых встречается искомая последовательность символов.

Аргументы процедуры

Благодаря аргументам пользователь имеет возможность управлять выполнением процедуры. При описании процедуры, зависящей от аргументов, имя аргумента принято вводить в скобках за именем процедуры в строке с ключевым словом Function/Sub. Например:

Function Рубли_в_Доллары (Коэффициент)

При вызове такой функции значение аргумента указывается в скобках после имени функции Например:

Вызов процедуры, имеющей аргументы, должен сопровождаться заданием значений для всех объявленных аргументов. Эти значения перечисляются в том же порядке, что и аргументы при объявлении и разделяются запятыми. В пользовательских функциях или модулях в качестве аргументов могут применяться выражения.

Конференция VBStreets

Весь вкус программирования!

  • Список форумовVisual BasicVisual Basic 1–6
  • Изменить размер шрифта
  • FAQ
  • Вход

Access процедура обработки событий

Access процедура обработки событий

Elvis » 09.07.2009 (Чт) 7:48

Re: Access процедура обработки событий

Денис » 09.07.2009 (Чт) 9:24

Re: Access процедура обработки событий

Roman Koff » 09.07.2009 (Чт) 9:38

Re: Access процедура обработки событий

Elvis » 10.07.2009 (Пт) 6:29

Private Sub Baton_Enter_Click()
On Error GoTo Err_Baton_Enter_Click

Dim stDocName As String
Dim stLinkCriteria As String

DoCmd.Close
stDocName = «f_welcome»
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Baton_Enter_Click:
Exit Sub

Err_Baton_Enter_Click:
MsgBox Err.Description
Resume Exit_Baton_Enter_Click

End Sub
Как расписать процедуру чтобы при выборке равной 1 происходил переход к одной форме, а при пустой выборке к другой форме. Если осуществить через IF Else Then то надо как-то обозначить запрос в виде переменной. как это сделать о_0 не разу с VBA и VBScript не сталкивался.

Re: Access процедура обработки событий

dormouse » 10.07.2009 (Пт) 14:30

Это чтоже получается?
открываем запрос с параметром. пользователь вводит значение параметра напрямую через стандартный даилог. запрос выполняется. и только теперь мы выясняем, что ввёл пользователь? и реагируем на «ошибку» показом заданного даилога?

если я это понял правильно, то надо делать так:

делаем форму со свободным полем, куда пользователь пишет значение. проверяем его на «ошибки». потом открываем запрос с критерием из того поля. Т.е. в точности всё наоборот

Re: Access процедура обработки событий

Elvis » 13.07.2009 (Пн) 6:28

Хммммм. конструктивно о_0
Нашел еще способ, но что-то косяк какой-то всплывает
Код: Выделить всё Private Sub poL01_AfterUpdate() ‘ после ввода кода пользователя
On Error GoTo Err_AfterUpdate
‘ контроль правильности кода пользователя
Dim vc As ADODB.Connection, rcD1 As New ADODB.Recordset, sT As String
Dim Tip1 As Integer

giWhUser = Me![pol01] ‘ присвоение номера пользователя
Tip1 = 0
Set vc = CurrentProject.Connection
vc.BeginTrans ‘ запуск транзакции
DoCmd.Hourglass True ‘ включить знак песочные часы
sT = «SELECT s.nUser, s.urDop, s.sFam, s.sNam, s.sOtch, s.sOtdel, s.uParol FROM sprUser AS s WHERE (((s.uParolID)<>0));»
rcD1.Open sT, vc, adOpenKeyset, adLockOptimistic
rcD1.MoveFirst ‘ переход в начало — первая запись в наборе данных
Do Until rcD1.EOF
If rcD1![nUser] = giWhUser Then
‘ если номер найден , присвоить значения переменным
giWhUrDop = rcD1![urDop]
gsWhNamUser = rcD1![sFam] & » » & rcD1![sNam] & » » & rcD1![sOtch]
gsWhNmOtdel = rcD1![sOtdel]
gsWhUserPar = rcD1![uParol]
Tip1 = 1
Exit Do
End If
rcD1.MoveNext
Loop
vc.CommitTrans ‘ всё закончить транзакцию
vc.Close ‘ закрыть подключение
Set vc = Nothing ‘ очистить значение переменной
DoCmd.Hourglass False ‘ выключить знак песочные часы
‘ если не нашли то выводим сообщение и закончили
If Tip1 = 0 Then
MsgBox «Код пользователя : » & giWhUser & » не верен . «, vbCritical, «КОД пользователя»
Me![pol01] = Tip1
Exit Sub
End If
‘ при правильном коде — открываем элементы на форме
Me![pol02] = gsWhNamUser
Me![nad02].Visible = True: Me![pol02].Visible = True
Me![nad03].Visible = True: Me![pol03].Visible = True
Me![pol03].SetFocus ‘ установка фокуса ввода на поле pol03

Читать еще:  Access поле со списком источник строк

Exit_AfterUpdate:
Exit Sub

Err_AfterUpdate:
MsgBox Err.Description
Resume Exit_AfterUpdate

при проверке правильности ввода постоянно выдает сообщение о не правильно введенном шифре

Re: Access процедура обработки событий

dormouse » 13.07.2009 (Пн) 10:46

Re: Access процедура обработки событий

alibek » 13.07.2009 (Пн) 10:48

Re: Access процедура обработки событий

Elvis » 16.07.2009 (Чт) 8:35

VBA, функция Автоформа и добавление элементов управления в форму

Использование VBA для ввода данных в форму

Как вы уже, наверное, поняли, почти все в Access является объектом. Одной из особенностей объектов является их способность распознавать события , представляющие собой некие действия, и реагировать на них. Практически все объекты распознают щелчки, двойные щелчки и перемещение мыши. Помимо этого, большинство объектов распознают и другие события. Так, например, элемент управления поле распознает 17 событий, а форма — более 50.

При работе с формой объекты практически постоянно сигнализируют события. Часть событий Access обрабатывает, но большинство игнорирует. Для событий, которые Access распознает, но не обрабатывает, можно указать действие, которое следует выполнить после наступления данного события (например, запустить макрос , решающий определенную задачу).

Все это звучит довольно сложно. К тому же события не относятся к числу понятий, о которых задумывается обычный пользователь . Тем не менее стоит уделить им внимание, если вас интересует, что происходит при вводе данных и как добиться большей эффективности объектов формы.

В базе данных GardenCo код клиента состоит из трех первых букв фамилии и двух первых букв имени, причем все буквы заглавные. Подобная методика позволяет создать уникальный код клиента. При попытке ввести код, который уже используется, Access заблокирует поле , и вам придется изменить код (например, добавить цифру), чтобы обеспечить его уникальность. Компьютер легко справляется с такими задачами, как объединение частей двух слов и преобразование букв в прописные. Поэтому, вместо того чтобы вводить код клиента вручную для каждой новой записи, предоставьте эту функцию VBA -программе.

В этом упражнении вы напишете небольшую VBA -программу и свяжете ее с событием После обновления (After Update) в поле Фамилия формы Клиенты. Если изменить содержимое поля и попытаться перейти к другому элементу формы, генерируется событие Перед обновлением (Before Update). Access реагирует на это событие, обновляя запись в исходной таблице, после чего генерируется событие После обновления (After Update), обработкой которого вы и займетесь. Это упражнение не является глубоким погружением в Visual Basic , но дает представление о его возможностях. В качестве рабочей папки будет использоваться Office XP SBSAccessChap11Events. Выполните следующие шаги.

  1. Откройте базу данных GardenCo, расположенную в рабочей папке.
  2. На панели объектов выделите Формы (Forms), в списке форм щелкните на Клиенты, а затем щелкните на кнопке Конструктор (Design).
  3. Щелкните на поле Фамилия, чтобы выделить его, и откройте диалоговое окно Свойства (Properties), нажав на клавишу (F4).
  4. Щелкните на вкладке Событие (Event), чтобы отoбразить следующий список.

В окне программы отображается процедура Private Sub Фамилия_AfterUpdate, которая будет использоваться для обработки события После обновления (After Update) в поле Фамилия. На данном этапе она состоит только из двух утверждений, определяющих ее начало (Sub) и конец (End Sub).

Ссылка на основную публикацию
Adblock
detector