Содержание
- 2. Макросы Макросы содержат понятные названия макрокоманд. Окно макроса изначально содержит поля для выбора макрокоманд и примечания,
- 3. 4. Запустим форму Печать и построим условия для выбора отчета с помощью нового макроса 3. Пример
- 4. Свободная форма Создадим макрос, открывающий запрос на событии ПОСЛЕ ОБНОВЛЕНИЯ поля формы. Запрос с параметром предполагает
- 5. DO WHILE условие истинно …. LOOP DO …. LOOP WHILE условие истинно или LOOP UNTIL условие
- 6. Операторы условной обработки IF … THEN … ELSE … END IF IF …THEN… If rst.RecordCount 0
- 7. Оператор выбора SELECT и безусловного перехода GOTO Оператор безусловного перехода GOTO метка используется для изменения последовательности
- 8. Вызов процедуры Sub main() a = InputBox("Введите коэфф. a") b = InputBox("Введите коэфф. b") c =
- 9. Модули - процедуры и функции Модуль - совокупность объявлений и процедур, объединенных в единое целое. Различают
- 10. Переменные Переменные, объявленные без использования слова AS, принимают тип VARIANT (16 байт для десятичных чисел и
- 11. События Объекты на формах и отчетах имеют СВОЙСТВА (например, скрытое поле) и МЕТОДЫ (например, поле обновить).
- 12. Методы RunComman и DoCmd 1. Метод RunCommand используется для выполнения команд меню/панелей инструментов с вызовом диалоговых
- 13. Модули 3. В свойствах формы событие ТЕКУЩАЯ ЗАПИСЬ содержит код: Private Sub Form_Current() On Error Resume
- 14. Код события Текущая запись Точка останова Шаг отладки кода (F8) Подручный процессор Просмотр значений переменных Текущий
- 15. “Полосатый” отчет Чередование темных и светлых полос задается на событии ФОРМАТИРОВАНИЕ выделенного мышкой заголовка ОБЛАСТИ ДАННЫХ
- 16. Бегущая строка Private Sub Form_Timer() Select Case Me.TimerInterval Case 200 Me.Надпись2.Visible = True Me.Надпись1.Visible = False
- 17. Экспорт данных Access в документ Word Создадим форму для контроля вывода данных на печать. На диске
- 19. Скачать презентацию
Макросы
Макросы содержат понятные названия макрокоманд. Окно макроса
изначально содержит поля для
Макросы
Макросы содержат понятные названия макрокоманд. Окно макроса
изначально содержит поля для
но может быть дополнено полями имени предопределенного макроса и условия для его выполнения. Покомандное выполнение макроса задается в режиме конструктора по команде Запуск – По шагам. Составим МакросСообщение, выводящий сообщение на экран.
Сложный макрос с созданным ранее макросом в качестве одной из макрокоманд. (макрос с именем AutoExec автоматически запускается в момент открытия БД).
Код макроса можно преобразовать в код VB по команде Сервис – Макрос – Преобразовать макросы:
Function Autoexec()
DoCmd.Hourglass True
DoCmd.RunMacro "МакросСообщение", , ""
DoCmd.OpenForm "тАбитуриенты", acNormal, "", "", , acNormal
End Function
4. Запустим форму Печать и построим условия для выбора отчета с
4. Запустим форму Печать и построим условия для выбора отчета с
3. Пример использования условий при выполнении команд макроса. Разработаем форму для формирования отдельных отчетов. Форма содержит группу переключателей
Свободная форма
Создадим макрос, открывающий запрос на событии ПОСЛЕ ОБНОВЛЕНИЯ поля формы.
Запрос
Свободная форма
Создадим макрос, открывающий запрос на событии ПОСЛЕ ОБНОВЛЕНИЯ поля формы.
Запрос
DO WHILE условие истинно
….
LOOP
DO
….
LOOP WHILE условие истинно
или
LOOP UNTIL условие не
DO WHILE условие истинно
….
LOOP
DO
….
LOOP WHILE условие истинно
или
LOOP UNTIL условие не
ЦИКЛ С ПРЕДУСЛОВИЕМ
Выполнять, пока условие истинно
ЦИКЛ С ПОСТУСЛОВИЕМ
Выполнять, пока условие
истинно
FOR I = 1 TO n STEP m
….
NEXT
ЦИКЛ С ОПРЕДЕЛЕННЫМ ЗНАЧЕНИЕМ ПАРАМЕТРА
Выполнять, пока параметр цикла i не превысит n
Операторы условной обработки
IF …
THEN
…
ELSE
…
END IF
IF …THEN…
If rst.RecordCount
Операторы условной обработки
IF …
THEN
…
ELSE
…
END IF
IF …THEN…
If rst.RecordCount
IF Forms![Счет]![P0] <> ""
THEN
Forms![Счет]![P0] = Forms![Счет]![P0] + vbCrLf + me.Имя
ELSE
Forms![Счет]![P0] = me.Наименование
END IF
Вложенный условный оператор
IF (a <> 0 Or a <> Null) THEN
IF b>0 THEN
b=sqrt(b)
ELSE
b=sqrt(abs(b))
END IF
END IF
Конструкция WITH…END WITH
WITH my_recordset
.Edit
![Выбор] = False
.Update
.MoveNext
END WITH
Конструкция WITH полезна при многократном обращении к форме по ее полному имени Forms!Абитуриенты!Год_рождения.Visible или
WITH Forms!Абитуриенты
!Год_рождения.Visible=FALSE
!Адрес.Visible=TRUE
END WITH
Оператор выбора SELECT и безусловного перехода GOTO
Оператор безусловного перехода GOTO метка
Оператор выбора SELECT и безусловного перехода GOTO
Оператор безусловного перехода GOTO метка
1:
y = InputBox("Ваш возраст ?", "Окно ввода")
Select Case y
Case Is <= 0: MsgBox ("Ошибка")
GoTo 1
Case Is < 55: i = MsgBox("Ваш возраст " & y & ". Вам рано на пенсию")
Case Is >= 55: i = MsgBox("Ваш возраст " & y & ". Вы на пенсии")
End Select
Вызов процедуры
Sub main()
a = InputBox("Введите коэфф. a")
b = InputBox("Введите
Вызов процедуры
Sub main()
a = InputBox("Введите коэфф. a")
b = InputBox("Введите
c = InputBox("Введите коэфф. c")
Do While a <> 0
Call kv_kor (a, b, c) ‘вызов процедуры
Loop
End Sub
Sub kv_kor (a, b, c) ‘ процедура
d = b * b - 4 * a * c формируется
If d < 0 Then в составе модуля
MsgBox ("Нет решения")
GoTo 1
Else
x1 = (-b + Sqr(d)) / (2 * a)
x2 = (-b – Sqr(d)) / (2 * a)
MsgBox ("x1=" & x1 & ", x2=" & X2)
End If
1:
a = InputBox("Введите коэфф. a")
b = InputBox("Введите коэфф. b")
c = InputBox("Введите коэфф. c")
End Sub
Модули - процедуры и функции
Модуль - совокупность объявлений и процедур, объединенных
Модули - процедуры и функции
Модуль - совокупность объявлений и процедур, объединенных
Стандартный модуль создается как объект БД и может выполнять любые вычисления. Модуль форм или отчета разрабатывается для обработки событий форм или отчетов. Каждый модуль состоит из области описания и процедур.
Процедура представляет собой последовательность операторов. Входящие в модуль процедуры объединены общей областью описания.
Процедуры делятся на две категории: подпрограммы и функции. Каждая процедура может быть вызвана из любого модуля, а функция - из таких объектов, как форма, запрос или отчет. Для передачи значений из вызывающих операторов в вызываемые процедуры служат аргументы.
Наряду с общедоступными процедурами Public (по умолчанию), существуют локальные процедуры Private, доступные только в том модуле, в котором они описаны.
Обращение к функции выполняется по ее имени на вкладке СОБЫТИЕ вместо выражения [Процедура обработки события], например,
=имя_функции()
Переменные
Переменные, объявленные без использования слова AS, принимают тип VARIANT (16 байт
Переменные
Переменные, объявленные без использования слова AS, принимают тип VARIANT (16 байт
DIM а, b AS STRING
Переменные, объявленные в процедуре или функции, по умолчанию являются локальными. Они объявляются оператором DIM. Оператор PRIVATE явно объявляет локальную переменную для процедуры или модуля.
Переменную, значение которой можно использовать во всех процедурах модуля, объявляют со словом PUBLIC в разделе DECLARATIONS модуля.
Переменную, значение которой можно использовать во всех модулях и процедурах приложения, объявляют со словом GLOBAL в разделе DECLARATIONS модуля.
Директивы кода:
Option Explicit - требование обязательного объявления переменных.
Option Compare Database – метод сравнение текстовых строк в процессе их сортировки.
События
Объекты на формах и отчетах имеют СВОЙСТВА (например, скрытое поле) и
События
Объекты на формах и отчетах имеют СВОЙСТВА (например, скрытое поле) и
Если поле свойства события содержит строку [Процедура обработки события], то VBA выполнит процедуру обработки события, которая имеет вид
Sub Объект_Событие()… End Sub
Открытие формы включает события Open (открытие), Load (загрузка), Activate (включение).
Для отмены события используется аргумент Cancel. Если ему присвоить True, то событие отменяется. Можно отменить события: BeforeDelConfirm (до подтверждения Del), BeforeInsert (до вставки), BeforeUpdate (до обновления), DblClick (двойное нажатие кнопки), Delete (удаление), Error (ошибка), Exit (выход), Format (форматирование), Open (открытие), Print (печать), UnLoad (выгрузка).
Объекты Screen (свойство ActiveControl) : ActiveForm (активная форма), ActiveReport (активный отчет) и PreviousControl (предыдущий элемент управления).
Например, Screen.PreviousControl.SetFocus (установка фокуса на предыдущий объект).
Методы RunComman и DoCmd
1. Метод RunCommand используется для выполнения команд меню/панелей
Методы RunComman и DoCmd
1. Метод RunCommand используется для выполнения команд меню/панелей
[DoCmd].RunCommand command или [Application].RunCommand command или RunCommand command
где command - это соответствующая команда меню или панели инструментов. Префикс [Application] или [DoCmd] не обязателен.
2. Метод DoCmd выполняет эти же действия с заданием аргументов команды без необходимости использования диалоговых окон команд.
RunCommand acCmdPrint ' вывод диалогового окна "Печать".
RunCommand acCmdSelectRecord ' выбор текущей записи (команда Выделить запись из меню Правка)
DoCmd.PrintOut acSelection ' печать текущей записи
Вызов макросов с помощью команды DoCmd:
DoCmd DoMenuItem A_FormBar, A_EditMenu, A_UndoField, , A_Menu_Ver20 - восстановление записи.
DoCmd GoToRecord , , A_NEWREC - переход к новой записи.
DoCmd Close - закрытие текущего объекта.
DoCmd Quit - закрытие приложения.
DoCmd DoMenuItem A_FormBar, A_EditMenu, 10, , A_MenuVer20 - вывод на экран диалога Поиск.
Модули
3. В свойствах формы событие ТЕКУЩАЯ ЗАПИСЬ содержит код:
Private Sub Form_Current()
Модули
3. В свойствах формы событие ТЕКУЩАЯ ЗАПИСЬ содержит код:
Private Sub Form_Current()
On Error Resume Next
If Me![фото] <> "" Then
Me.Рисунок.Picture = Me.фото
Else
Me.Рисунок.Picture = ""
End If
End Sub
1. Столбчатая форма для таблицы тАбитуриенты. В поле Фото записано имя файла с фото. Хранение не файла, а его имени в файловой системе эффективнее, т.к. уменьшает размер БД.
2. На форму поместим поле ФОТО со свойством ВЫВОД НА ЭКРАН=НЕТ и объект РИСУНОК с именем РИСУНОК.
Код события Текущая запись
Точка останова
Шаг отладки кода (F8)
Подручный процессор
Просмотр значений
Код события Текущая запись
Точка останова
Шаг отладки кода (F8)
Подручный процессор
Просмотр значений
Текущий объект
Окно отладки программного кода
“Полосатый” отчет
Чередование темных и светлых полос задается на событии ФОРМАТИРОВАНИЕ выделенного
“Полосатый” отчет
Чередование темных и светлых полос задается на событии ФОРМАТИРОВАНИЕ выделенного
Dim BackForth As Variant
Private Sub ОбластьДанных_Format(Cancel As Integer, FormatCount As Integer)
Const ColorWhite = 16777215
Const ColorGray = 12632256
Select Case BackForth
Case True
Me. ОбластьДанных.BackColor = ColorWhite
Case False
Me. ОбластьДанных.BackColor = ColorGray
End Select
BackForth = Not BackForth
End Sub
Бегущая строка
Private Sub Form_Timer()
Select Case Me.TimerInterval
Case 200
Me.Надпись2.Visible = True
Me.Надпись1.Visible = False
Me.TimerInterval
Бегущая строка
Private Sub Form_Timer()
Select Case Me.TimerInterval
Case 200
Me.Надпись2.Visible = True
Me.Надпись1.Visible = False
Me.TimerInterval
Case 400
Me.Надпись3.Visible = True
Me.Надпись2.Visible = False
Me.TimerInterval = Me.TimerInterval + 200
Case 600
Me.Надпись4.Visible = True
Me.Надпись3.Visible = False
Me.TimerInterval = Me.TimerInterval + 200
Case 800
Me.Надпись1.Visible = True
Me.Надпись4.Visible = False
Me.TimerInterval = 200
End Select
End Sub
Для демонстрации действий с таймером создадим на форме надписи с именами НАДПИСЬ1, НАДПИСЬ2, НАДПИСЬ3, НАДПИСЬ4. В свойствах первой надписи на вкладке МАКЕТ параметр ВЫВОД НА ЭКРАН установим в значение ДА, у остальных надписей - в значение НЕТ. На событие формы ИНТЕРВАЛ ТАЙМЕРА указываем 200 (миллисекунд), а в поле ТАЙМЕР наберем код:
Процедура выполняется по истечении времени, указанного в поле ИНТЕРВАЛ ТАЙМЕРА. Оператор Select Case … End Select проверяет достижение таймером значений и поочередно задает для надписей режимы видимости (свойство Visible). По истечении 800 миллисекунд таймеру вновь задается 200 миллисекунд для бесконечного цикла таймера.
Экспорт данных Access в документ Word
Создадим форму для контроля вывода данных
Экспорт данных Access в документ Word
Создадим форму для контроля вывода данных
Private Sub Кнопка10_Click()
Dim wdd As Word.Document
Dim wda As Word.Application
Dim db As Database
Set db = CurrentDb()
Dim str_sql As String
'проверяем вариант отчета в Word
Select Case Me.Группа0.Value
Case 1:
'открываем документ c готовым шаблоном
Set wdd = GetObject("C:\letter.doc")
'создаем указатель на приложение
Set wda = wdd.Parent
'делаем приложение видимым
wda.Visible = True
'размер шрифта, установленный по умолчанию в MS WORD
a = wda.Selection.Font.Size
' можно создать строку статического запроса
' str_sql = "SELECT тАбитуриенты.кодАБ,” _
‘ & “тАбитуриенты.Фамилия, тАбитуриенты.Имя, “
‘ & “ тАбитуриенты.Отчество, тВУЗы.НазваниеВУЗа, “
‘ & “тВУЗы.Телефон, тВУЗы.Рейтинг FROM тВУЗы" _
' & " INNER JOIN (тАбитуриенты INNER JOIN “ _
‘ & “тСвязьАбВУЗ ON тАбитуриенты.кодАБ =“ _
‘ & “тСвязьАбВУЗ.КодАб) ON” _
‘ & “ тВУЗы.КодВУЗа = тСвязьАбВУЗ.КодВуза"
' Set rst = db.OpenRecordset(str_sql, dbOpenDynaset, dbReadOnly)
' можно использовать существующий в БД запрос
Set rst = db.OpenRecordset("АбВУЗ", dbOpenDynaset, dbReadOnly)