Процедуры общего назначения
Основной отличительной чертой процедур общего назначения является то, что они не связаны ни с каким событием, и их вызов разработчик осуществляет по своему усмотрению.
Процедуры общего назначения относятся к секции General. Так как процедура не связана ни с одним элементом управления, то поле Object окна кода вместо имени объекта содержит строку General.
Чтобы просмотреть список процедур общего назначения, необходимо выбрать в списке Object поле General. Процедуры общего назначения используются, как правило, для решения каких-либо общих задач, например, расчетов, которые необходимо выполнять в различных местах программы.
При разработке макросов часто требуется выполнить одни и те же законченные действия в различных их частях. Чтобы избежать многократного набора кода для этих действий, целесообразно описать их в виде подпрограммы и обращаться к ней по мере необходимости. Различают подпрограммы – процедуры и подпрограммы – функции. Описываются подпрограммы при помощи инструкций SUB...END – подпрограмма – процедура, инструкций FUNCTION...END – подпрограмма – функция. Различие между процедурами и функциями состоит в том, что функция всегда возвращает значение и может применяться в правой части выражения, как и любая другая встроенная функция, а процедура Sub не может.
Инструкция Sub...End Sub
Описывает имя, аргументы и текст программы, составляющий тело процедуры Sub.
Синтаксис инструкции:
Sub Имя[(СписокАргументов)]
[Операторы]
[Exit Sub]
[Операторы]
End Sub
Имя – обязательный аргумент, это имя процедуры Sub, удовлетворяющее стандартным правилам именования переменных. Оно должно быть уникальным в области видимости процедуры.
СписокАргументов – необязательный параметр. Список переменных, представляющий параметры, которые передаются в процедуру Sub при ее вызове. Имена переменных разделяются запятой.
Операторы – необязательный элемент. Любая группа инструкций, выполняемых в процедуре Sub, находятся между Sub и End Sub.
Инструкция Function...End Function
Описывает имя, аргументы и текст программы, составляющий тело процедуры Function.
Синтаксис инструкции:
Function Имя[(СписокАргументов)] [As Тип]
[Операторы]
[Имя = Выражение]
[Exit Function]
[Операторы]
[Имя = Выражение]
End Function
Имя – обязательный элемент. Содержит имя процедуры Function, удовлетворяющее стандартным правилам именования переменных.
СписокАргументов – необязательный элемент, это список переменных, представляющий параметры, которые передаются в процедуру Function при ее вызове. Имена переменных разделяются запятой.
Тип – необязательный элемент. Тип данных значения, возвращаемого процедурой Function. Поддерживаются типы Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String (за исключением строк фиксированной длины), Object, Variant или любой определяемый пользователем тип. Невозможен возврат массивов любого типа.
Операторы – необязательный элемент. Содержит любую группу инструкций, выполняемых внутри процедуры Function.
Выражение – необязательный элемент, здесь формируется возвращаемое значение процедуры Function.
Задания
1. Создайте с помощью Мастера отчеты, содержащие результаты выполнения запросов «ЦеныНаТовары», «ТоварыДешевле1000руб», «ТоварыПоМаркам», «ТоварыПоставляемыеЗаданнымПоставщиком», «СведенияОПоставщиках» из лабораторной работы № 5.
2. Создайте простой отчет на основе таблицы «Товар».
3. Добавьте в формы «СведенияОПоставщиках» и «ЦеныНаТовары» кнопки, открывающие соответствующие отчеты.
4. Создайте с помощью Мастера отчет «ЛичнаяКарточкаСотрудника» на основе таблицы «Сотрудник», переместив все поля в отчет, отменив все уровни группировки и выбрав Вид макета для отчета - В столбец.
5. Перейдите в режим Конструктора отчета «ЛичнаяКарточкаСотрудника» и откройте Окно свойств для отчета. Щелкните в поле свойства Источник записей и затем - по кнопке с 3 точками справа. При появлении окна диалога Для таблицы вызван построитель запросов ответьте Да. Поместите все поля таблицы «Сотрудник» в бланк QBE, в строке Условия отбора для поля ТабельныйНомер введите:
[Forms]![Сотрудник]![ТабельныйНомер]
(Замечание. После создания запроса запускать его на выполнение не нужно!)
6. Поместите в форму «Сотрудник» кнопку, открывающую отчет «ЛичнаяКарточкаСотрудника» для каждого сотрудника Отдела продаж.
7. Создайте с помощью Конструктора простой отчет, содержащий список сотрудников Отдела продаж с полями: ТабельныйНомер, Фамилия, Имя, Отчество, Должность (Название), Оклад. Отчет сохраните под именем «СписокСотрудников».
8. Задайте заголовок отчета - Список сотрудников.
9. Сгруппируйте в отчете «СписокСотрудников» данные по первой букве фамилии.
10. (*) Выведите первую букву фамилии в заголовок группы (с помощью функции Left).
11. Создайте с помощью Конструктора отчет «ПлатежнаяВедомость», содержащий список сотрудников Отдела продаж с полями: ТабельныйНомер, Фамилия, Имя, Отчество, Оклад. Поле Должность (Название) вынесите в заголовок группы.
(Замечания: 1) Отчет должен иметь вид таблицы.
2) Отчет должен иметь следующие разделы: Заголовок отчета, Верхний колонтитул, Заголовок группы «Название», Область данных, Примечание группы «Название», Нижний колонтитул, Примечание отчета:
· Заголовок отчета содержит название - Платежная ведомость.
· Верхний колонтитул содержит заголовки столбцов таблицы: ТабельныйНомер, Фамилия, Имя, Отчество, Оклад. Чтобы отобразить линии таблицы для всех надписей задайте в Свойствах: Тип границы - Сплошная, Ширина границы - 1 пункт.
· Заголовок группы «Название» содержит поле Должность (Название).
· Область данных содержит, собственно, сами данные отчета, расположенные в соответствующих столбцах таблицы. Линии таблицы отобразите как в верхнем колонтитуле.
· Примечание группы «Название» содержит поле Итого, которое создайте в отчете и поместите в него общую сумму окладов по должностям (с помощью функции Sum). Для поля Итого в Свойствах поля задайте Формат поля - Денежный, Число десятичных знаков – 2.
· в Нижний колонтитул поместите поле Стр, которое позволяет пронумеровать страницы отчета с помощью выражения:
=[Page]
· Примечание отчета содержит поле Всего, которое создайте в отчете и поместите в него общую сумму окладов всех сотрудников (по аналогии с полем Итого). Свойства поля Всего задайте по аналогии со свойствами поля Итого. Для наглядности поле Всего отделите от основного отчета с помощью элемента управления Линия.)
12. Создайте с помощью Конструктора отчеты, позволяющие просматривать:
12.1 Для каждого товара его поставщика. Информация о поставщике включает НазваниеПоставщика, Телефон, Фамилию, Имя, Отчество директора фирмы. Информация о товаре включает Тип, Марку и Артикул товара. Отчет сохраните под именем «ПоставщикиТоваров».
12.2 Какие товары продал каждый продавец фирмы. Информация о сотруднике включает ТабельныйНомер, Фамилию, Имя, Отчество. Информация о товаре включает Тип, Марку и Артикул товара. Отчет сохраните под именем «ПродавцыТоваров».
(*) Отчет должен иметь вид, представленный на рис. 10.9.
12.3 Какие товары куплены какой фирмой. Информация о фирме-покупателе включает НазваниеПокупателя, Телефон. Информация о товаре включает Тип, Марку и Артикул товара. Отчет сохраните под именем «ПокупателиТоваров».
(*) Отчет должен иметь вид, представленный на рис. 10.10.
13. (*) Напишите модули на VBA:
13.1 Модуль для отчета «ПродавцыТоваров», позволяющий написать ФИО сотрудников в творительном падеже.
13.2 Модуль для отчета «ПокупателиТоваров», позволяющий написать названия фирм в творительном падеже.
рис. 10.9. Вид отчета «ПродавцыТоваров»
Рис. 10.10. Вид отчета «ПокупателиТоваров»
14. Создайте с помощью Конструктора документы внешней отчетности – «Отчет о деятельности организации оптовой торговли» (разд. 1 и разд. 2). Макеты отчетов находятся в БД «Учет товарооборота (вспом)»:
14.1 Импортируйте отчеты «ОтчетОДеятельности
ОрганизацииОптовойТорговли1» и «ОтчетОДея-
тельностиОрганизацииОптовойТорговли2» из БД «Учет товарооборота (вспом)». Области, закрашенные в серый цвет, замените реальными таблицами с данными. Для заполнения таблиц создайте запросы, содержащие необходимые данные:
· Для отчета «ОтчетОДеятельностиОрганизацииОптовойТорговли1» рассчитайте количество товаров, проданных оптом и в розницу, а также стоимости этих товаров. Общий оборот организации можно рассчитать в отчете.
· Для отчета «ОтчетОДеятельностиОрганизацииОптовойТорговли2» рассчитайте для каждого вида товара количество (в штуках и в стоимостном выражении) проданного товара и количество (в штуках и в стоимостном выражении) оставшегося на складе товара. При этом в отчете отобразите стоимость оставшегося на складе товара как по отповой, так и по розничной ценам.
Контрольные вопросы
1. Для чего нужны отчеты?
2. Каковы различия между формами и отчетами?
3. Перечислите основные способы создания отчетов.
4. Какие типы отчетов Вы знаете?
5. Как создать отчет с помощью Мастера отчетов?
6. Какие этапы включает процесс создания отчета?
7. Какие элементы управления используются в отчете?
8. Для чего нужны операции сортировки и группировки в отчете?
9. Перечислите основные разделы отчета.
10. Перечислите основные элементы языка VBA.
11. Перечислите основные типы данных VBA.
12. Перечислите способы декларации переменных.
13. Перечислите стандартные функции для работы со строками.
14. Дайте определение массива и охарактеризуйте свойства массивов.
15. Дайте определение типа данных, определяемого пользователем.
16. Дайте определение оператора и перечислите основные операторы.
17. Синтаксис и назначение операторов выбора.
18. Ситнаксис и назначение операторов-переключателей.
19. Операторы цикла.
20. Подпрограммы-процедуры и подпрограммы-функции.
21. Перечислите основные типы модулей VBA.