- •Введение
- •1. Создание базы данных средствами ms sql server
- •1.1. Структура базы данных
- •1.2. Создание баз данных в ms sql Server 2000
- •1.3. Создание таблиц базы данных в ms sql Server 2000
- •1.4. Типы данных в ms sql Server 2000
- •1.5. Управление пользователями
- •1.6. Способы обмена данными между Access и sql Server через odbc
- •1.7. Определение внешних источников данных в odbc
- •1.8. Связь с таблицами баз данных sql Server
- •1.9. Создание базы данных, таблиц, схемы данных средствами ms sql Server 2005
- •1.10. Обеспечение доступа к базе данных средствами ms sql Server 2005
- •1.11. Перенос базы данных на другой компьютер
- •1.12. Создание источника данных odbc и взаимодействие с приложением Access
- •2. Создание таблиц и схемы данных средствами субд access
- •2.1. Субд Microsoft Access
- •2.2. Объекты Access
- •Создание базы данных в Access 2003
- •Режимы создания таблиц базы данных в Access 2003
- •2.5. Создание таблицы в режиме Конструктор
- •2.6. Редактирование структуры таблицы
- •2.7. Создание и редактирование схемы данных
- •2.8. Ввод и редактирование данных
- •2.9. Создание базы данных, таблиц и схемы данных в Access 2007
- •Формы данных
- •3.1. Общие сведения о форме
- •3.2. Способы создания форм
- •3.3. Области и элементы формы в режиме Конструктор
- •3.4. Кнопки панели элементов
- •3.5. Создание однотабличной формы в режиме автоформы
- •3.6. Редактирование формы в режиме Конструктор
- •3.7. Создание составной формы
- •3.8. Ограничения доступа к данным через форму
- •3.9. Вычисления в форме
- •3.10. Создание форм в Access 2007
- •Запросы
- •Основы разработки запросов
- •Типы запросов
- •Создание запросов на выборку данных в режиме
- •Создание вычисляемого поля в запросе
- •4.5. Создание запроса с групповыми вычислениями
- •4.6. Создание параметрических запросов
- •4.7. Создание перекрестных запросов
- •4.8. Запрос на создание новой таблицы
- •4.9. Запрос на добавление записей
- •4.10. Запрос на удаление записей
- •4.11. Запрос на обновление записей
- •4.12. Создание запросов в Access 2007
- •5.1. Способы создания отчетов
- •Типы элементов управления
- •Создание надписей в отчете
- •Создание связных элементов (полей)
- •Создание вычисляемых элементов
- •Группирование записей в отчете
- •Создание отчета с помощью мастера отчетов
- •Создание отчета в режиме Конструктор
- •6. Заполнение полосы Верхний колонтитул.
- •7. Заполнение полосы Заголовок группы.
- •8. Заполнение полосы Область данных.
- •9. Заполнение полосы Примечание группы.
- •10. Заполнение полосы Нижний колонтитул.
- •11. Заполнение полосы Примечание отчета.
- •Экзаменационная ведомость Факультет Шифр группы Дисциплина
- •Списки групп
- •5.9. Создание отчетов в Access 2007
- •Создание макросов
- •6.1. Основы создания макросов
- •6.2. Формирование макрокоманд
- •6.3. Создание группы макросов
- •6.4. Использование условий в макросе
- •6.5. Создание макросов с использованием ссылок на объекты
- •6.6. Организация выполнения макроса
- •6.7. Выполнение макроса с наступлением события
- •6.8. Создание кнопки запуска макроса в форме
- •6.9. Пример создания макроса для решения задачи, использующей запросы
- •6.10. Пример создания макроса, работающего с данными нескольких объектов
- •Создание модулей
- •Общие сведения о языке vba
- •Модель объектов приложения Access
- •Модель объектов доступа к данным
- •Описание переменных
- •Операторы присваивания
- •Описание констант
- •Операторы управления выполнением программ
- •Операторы организации цикла:
- •Использование объекта Recordset
- •Выполнение процедур vba
- •7.10. Примеры модулей
- •Пример 3. Рассчитать суммарную поставку по каждому индексу товара в таблице поставка.
- •Пример 4. Создать новую таблицу Продукты из двух полей Индекс товара и Название, обеспечить ввод данных в эту таблицу.
- •Для решения задачи необходимо создать форму Поставщики_Города нижеследующего вида и связать с ней процедуру.
- •Пример 6. Открыть таблицу Товары, прочесть и вывести на экран все записи.
- •Пример 7. Выбор записей из таблицы Поставка для товара с кодом 123.
- •Пример 8. Выбор данных из связанных таблиц Товары и Поставка, связанных по индексу товара.
- •Пример 9. Выбор данных из трех связанных таблиц Товары, Поставщики и Поставка.
- •Пример 10. Поиск записей по наименованию товара (не ключевое поле) в таблице Товары и вывод найденных записей.
- •Пример 11. Поиск записей по дате поступления (не ключевое поле) в таблице Поставка и вывод найденных записей.
- •Пример 12. Поиск записей по индексу товара в таблице Товары и замена поля Розничная цена.
- •Пример 13. Поиск записей в таблице Товары для записей, где поле Розничная цена меньше заданной.
- •Управление приложением пользователя
- •Создание панели управления приложением с помощью диспетчера
- •Добавление рисунка в кнопочную форму
- •Создание кнопочной формы в режиме конструктора
- •Запуск Access с открытием приложения пользователя
- •Задания по разработке баз данных и приложений для работы с ними
- •Продажа бензина за ________________
- •6. Создать макросы
- •7. Создать модули
- •8. Создать панель управления приложением
- •4. Создать запросы.
- •Периодичность
- •Справка о продаже билетов
- •6. Создать макросы
- •7. Создать модули
- •8. Создать панель управления приложением
- •4. Создать запросы.
- •6. Создать макросы.
- •7. Создать модули.
- •8. Создать панель управления приложением.
- •4. Создать запросы.
- •Расписание работы
- •Список сотрудников
- •Список больных фио врача Дата посещения
- •6. Создать макросы
- •7. Создать модули
- •8. Создать панель управления приложением
- •Итоговая ведомость замен
- •6. Создать макросы
- •7. Создать модули
- •8. Создать панель управления приложением
- •4. Создать запросы.
- •5. Создать отчеты.
- •Факультет __________ Группа ______
- •Выдача книг
- •6. Создать макросы.
- •7. Создать модули.
- •8. Создать панель управления приложением.
- •4. Создать запросы.
- •5. Создать отчеты.
- •Список автомобилей
- •Список водителей
- •6. Создать макросы.
- •7. Создать модули.
- •8. Создать панель управления приложением
- •4. Создать запросы.
- •5. Создать отчеты.
- •Транзисторы
- •Справка о продаже транзисторов
- •6. Создать макросы.
- •7. Создать модули.
- •8. Создать панель управления приложением.
- •4. Создать запросы.
- •5. Создать отчеты.
- •Выпрямительные диоды
- •Закупка приборов
- •6. Создать макросы.
- •7. Создать модули.
- •8. Создать панель управления приложением.
- •4. Создать запросы.
- •5. Создать отчеты.
- •Сводная ведомость, дата
- •Справка о поставках мебели
- •6. Создать макросы.
- •7. Создать модули.
- •8. Создать панель управления приложением.
- •Библиографический список
- •Оглавление
3.9. Вычисления в форме
Вычисления в каждой записи формы. Чтобы произвести вычисления на основе данных одной записи в форме, необходимо создать вычисляемый элемент управления, в который записывается выражение. Для создания вычисляемого элемента управления надо открыть форму в режиме Конструктор и, нажав на панели элементов кнопку Поле (аб|) разместить вычисляемый элемент управления в нужном месте. Затем в объект свободный вносится выражение, в объект поле надпись. Выражение должно начинаться со знака равенства (=). В качестве операндов выражения чаще всего используются имена полей, константы, а в качестве операторов – знаки арифметических операций.
Рассмотрим пример создания вычисляемого поля. Пусть таблица или запрос, на которых строится форма, содержит данные о сдаче экзаменов за последнюю сессию и имеет поля: ФИЗИКА, МАТЕМАТИКА, ПРОГРАММИРОВАНИЕ, ИНЖЕНЕРНАЯ ГРАФИКА. В форме нужно подсчитать средний балл каждого студента, создав вычисляемый элемент управления и записав в него выражение:
=([ФИЗИКА]+[МАТЕМАТИКА]+
[ПРОГРАММИРОВАНИЕ]+[ИНЖЕНЕРНАЯ ГРАФИКА])/4
Для объекта с именем Свободный вызывают контекстное меню, выбирают пункт меню Свойства, вкладку Данные, строку Данные. При этом можно внести формулу в строке Данные вручную, а можно воспользоваться кнопкой Построитель выражений (…), которая находится в данной строке. В окне построителя выражений имеется панель кнопок с различными операторами и есть возможность выбрать из списка нужные поля (активизировав во второй нижней части окна строку <список полей>) и функции.
Пересчет одних полей при изменении других полей в каждой записи формы. В данном случае пересчет одних полей надо связать с возникновением события, связанного с изменением других полей.
Пример 1. Пусть имеется две таблицы ПОСТАВКА и СКЛАД, требуется при вводе новой записи в таблицу ПОСТАВКА увеличивать поле ОСТАТОК в таблице СКЛАД на величину введенного количества. Порядок действий следующий:
создать с помощью мастера форм форму, в которой отразить все поля из таблицы ПОСТАВКА и поле ОСТАТОК из таблицы СКЛАД;
открыть созданную форму в режиме конструктора;
выделить поле КОЛИЧЕСТВО, открыть окно свойств для данного поля (кнопка Свойства на панели инструментов или контекстное меню, пункт Свойства);
в окне свойств выбрать вкладку События, щелкнуть в строке После обновления, щелкнуть по кнопке Построитель выражений, выбрать пункт меню Программы, щелкнуть по кнопке ОК; при этом мы попадаем в процедуру обработки события, связанного с обновлением поля КОЛИЧЕСТВО;
набрать оператор присваивания
[ОСТАТОК]=[ОСТАТОК]+[КОЛИЧЕСТВО]
сохранить процедуру, закрыть окно процедуры и окно свойств, сохранить форму, выйти из режима конструктора.
Пример 2. Пусть имеется две таблицы НАЗНАЧЕНИЕ НА РЕЙС и ТИПЫ САМОЛЕТОВ. Необходимо, чтобы при внесении записи в таблицу НАЗНАЧЕНИЕ НА РЕЙС поле КОЛИЧЕСТВО МЕСТ автоматически заполнялось и равнялось аналогичному полю из таблицы ТИПЫ САМОЛЕТОВ. Автоматическое заполнение пусть происходит при заполнении поля НОМЕР САМОЛЕТА. Порядок действий следующий:
создать с помощью мастера форм форму для ввода данных в таблицу НАЗНАЧЕНИЕ НА РЕЙС и дополнительно выбрать поле КОЛИЧЕСТВО МЕСТ из таблицы ТИПЫ САМОЛЕТОВ (если таблицы не связаны между собой, то необходимо выбрать поле связи из третьей таблицы, через которую связаны первые две);
отобразить созданную форму в режиме конструирования;
выделить поле НОМЕР САМОЛЕТА, открыть окно его свойств, выбрать вкладку События, строку После обновления, щелкнуть по кнопке Построитель выражений, выбрать пункт меню Программы и щелкнуть по кнопке ОК;
набрать в теле процедуры оператор приcваивания
[НАЗНАЧЕНИЕ НА РЕЙС_КОЛИЧЕСТВО МЕСТ]=
[ТИПЫ САМОЛЕТОВ_КОЛИЧЕСТВО МЕСТ]
сохранить процедуру, закрыть окно процедуры и окно свойств, сохранить форму, выйти из режима конструктора.
Вывод сообщений при неправильном вводе и обеспечение повторного ввода.
Пример: при вводе поля Дата рождения в таблице Сотрудники проверить возраст сотрудника. Если он меньше 18 лет, сообщить об ошибке, удалить дату и обеспечить ее повторный ввод. Порядок действий:
создать с помощью Автоформы в столбец форму для ввода данных в таблицу Сотрудники;
открыть созданную форму в режиме конструктора;
выделить поле Дата рождения, открыть окно свойств для данного поля (кнопка Свойства на панели инструментов или контекстное меню, пункт Свойства);
в окне свойств выбрать вкладку События, щелкнуть в строке После обновления, щелкнуть по кнопке Построитель выражений, выбрать пункт меню Программы, щелкнуть по кнопке ОК; при этом мы попадаем в процедуру обработки события, связанного с обновлением поля Дата рождения;
внести следующие операторы
If Year(Date()) – Year([Дата рождения]) < 18 Then
[Дата рождения] = Null
[Должность].SetFocus
[Дата рождения].SetFocus
MsgBox “ Возраст меньше 18 лет“, vbOKOnly
End If
сохранить процедуру, закрыть окно процедуры и окно свойств, сохранить форму, выйти из режима конструктора.
Вычисление итоговых значений для записей формы. Вычисление итоговых значений для записей формы выполняется с помощью встроенных статистических функций, записываемых в качестве выражения в вычисляемых элементах управления.
Пусть требуется просуммировать значения поля КОЛИЧЕСТВО в таблице ПОСТАВКА. Порядок действий следующий:
отразить форму ПОСТАВКА в режиме конструктор;
нажать на панели элементов кнопку Поле и разместить элемент управления в области примечания формы (итоговые значения всегда нужно размещать в области примечания формы);
выделить элемент свободный и внести туда выражение
= Sum([КОЛИЧЕСТВО]), при этом можно внести формулу сразу или воспользоваться окном свойств, где выбрать вкладку Данные, строку Данные, кнопку Построитель выражений;
во вкладке Макет окна свойств можно задать формат поля и количество цифр в десятичной части числа;
выделить элемент поле и внести итоговую надпись.
Вычисление итоговых значений для записей подчиненной формы и вывод их в основной форме. Основная форма и ее подчиненная форма строятся на основе таблиц, между которыми установлена связь типа «один-ко-многим». При этом в основной форме выводится только одна запись, а в подчиненной форме – несколько записей, которые подчинены ей. При расчете итогового значения для группы записей подчиненной формы вычисляемое поле может быть отображено в области данных основной формы.
Пример. Пусть требуется подсчитать для каждой модели суммарную продажу (Sum([Количество])) в подчиненной форме Продажа-ПФ и вывести эти данные в области данных главной формы Устройства-Продажа. Порядок действий следующий:
отобразить подчиненную форму Продажа-ПФ в режиме конструктора;
в данной форме в области примечания формы создать вычисляемый элемент управления (с помощью кнопки Поле панели элементов) и внести туда выражение, содержащее статистическую функцию подсчета суммы =Sum([Количество]); запомнить имя созданного элемента управления (допустим это было имя “Поле10”); сохранить произведенные действия и выйти из режима конструктора;
отобразить основную форму Устройства-Продажа в режиме конструктора; в основной части формы создать поле с помощью кнопки Поле на панели элементов и записать туда выражение:
= [Продажа-ПФ] . [Form]![Поле10]
Это выражение является ссылкой на элемент управления Поле10 в подчиненной форме.
Общий формат такой ссылки имеет вид:
первый вариант ссылки
=[Имя подчиненной формы].[Form]![Имя поля в подчиненной форме]
или второй вариант ссылки
=Forms![Имя главной формы]![Имя подчиненной формы]![Имя поля].
Например:
=Forms![Устройства-Продажа]![Продажа-ПФ]![Поле10]
Пересчет поля в главной форме при изменении или вводе значения в поле подчиненной формы. Пусть имеются основная форма Устройства-Продажа и подчиненная форма Продажа-ПФ для таблиц УСТРОЙСТВА и ПРОДАЖА, между которыми существует связь «один-ко-многим». Требуется пересчитывать поле Количество на складе в основной форме при изменении или вводе данных в поле Количество в подчиненной форме, если поле Количество меньше или равно поля Количество на складе, в противном случае выдать сообщение об ошибке и обеспечить повторный ввод информации. Порядок действий:
отобразить подчиненную форму ПРОДАЖА-ПФ в режиме конструктора;
выделить поле Количество и открыть для него окно свойств (кнопка Свойства на панели инструментов или в контекстном меню пункт Свойства);
в окне свойств перейти во вкладку События, в строке После обновления щелкнуть по кнопке Построитель выражений, выбрать пункт меню Программы и щелкнуть по кнопке ОК; при этом мы попадаем в процедуру обработки события;
набрать следующие операторы
IF FORMS![Устройства-Продажа]![Количество на складе] > [Количество] THEN
FORMS![Устройства-Продажа]![Количество на складе] = FORMS![Устройства-Продажа]![Количество на складе] –
[Количество]
ELSE
[Количество] = NULL
[Дата продажи].SetFocus
[Количество].SetFocus
MsgBox “ Количество больше количества на складе “, vbOKOnly
End If
сохранить процедуру, закрыть окна процедуры, свойств, конструирования формы.
