Н.А.Максимов
Три источника
и три составные части
Часть 3 Учебный практикум
Самоучитель
Чебоксары 2009
ББК 32.973...
61 downloads
800 Views
3MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Н.А.Максимов
Три источника
и три составные части
Часть 3 Учебный практикум
Самоучитель
Чебоксары 2009
ББК 32.973.2-018.2 Серия посвящается учителям и выпускникам физико-
М 17
математической школы-интерната №2 г.Чебоксары
Рецензенты: зав. кафедрой информатики и математического моделирования математического факультета ЧГУ им. И.Н.Ульянова, профессор, доктор физ.мат. наук Артемьев И.Т. зав. кафедрой информационных систем экономического факультета ЧГУ им. И.Н.Ульянова, доцент, кандидат хим. наук Федотов В.Х. зав. кафедрой информатики и ВТ ЧГПУ им. И.Я.Яковлева, доктор физ.мат. наук Михайлова М.В.
Н.А. Microsoft OFFICE (часть третья). Учебный практикум. - Чебоксары, 2009.– 56с. Максимов
Издание второе, уточненное Практикум предназначен для проведения лабораторных занятий и самостоятельной работы студентов экономических специальностей по курсу «Информационные технологии в экономике». Предполагается, что предварительно студент овладел основными навыками работы в среде Microsoft Word и Excel, есть навыки работы с графическими объектами и имеет элементарные представления о программировании. Исходя из принципа «лучше один раз показать, чем долго и нудно объяснять», брошюра снабжена предостаточным количеством иллюстраций и копий экрана. При работе с пособием придерживайтесь текста изложения, он следует строго последовательно, картинки могут быть смещены из-за попытки их рационального размещения на странице. При работе требуется большая концентрации внимания и понимания, чем это было с другими приложениями Office. Тем не менее, непринужденный стиль изложения и доступное объяснение сложных понятий сделает вашу работу по изучению основ систем управления базами данных (СУБД) и языка QBE приятной и полезной во всех отношениях. Для закрепления навыков и умений приведены практические задания для самостоятельной работы.
© Максимов Н.А.
Maximov Nicolay
Digitally signed by Maximov Nicolay DN: CN = Maximov Nicolay, C = RU, O = Maximoff, OU = Home Reason: Welcome to ComPit! Date: 2009.01.31 04:42:33 +03'00'
®
СОДЕРЖАНИЕ 1. Начало .............................................................................................. 3 2. Таблицы............................................................................................ 5 2.1. Фильтры в таблицах .......................................................................................... 16 2.2. Маски ввода .......................................................................................................... 17
3. Схема данных ................................................................................ 19 4. Формы ............................................................................................. 23 5. Запросы .......................................................................................... 25 5.1. Простые запросы на выборку ............................................................................ 25 5.2. Перекрестный запрос ......................................................................................... 29 5.3. Варианты запросов ............................................................................................. 32
5.3.1. Групповые операции. .......................................................................... 32 5.3.2. Пустые значения в арифметических операциях (Функция Nz) ...... 34 5.3.3. Запросы с параметрами ...................................................................... 37 5.4. Запросы на обновление....................................................................................... 37
5.4.1. Запрос на удаление ............................................................................. 38 5.4.2. Запрос на обновление ......................................................................... 39
6. Отчеты ............................................................................................ 41 6.1. Остатки на начало ............................................................................................. 41 6.2. Отчет о поступлениях ...................................................................................... 44
7. Макросы .......................................................................................... 46 8. Кнопочные формы ......................................................................... 49 Дополнительные сведения ................................................................ 54 Использованная литература .............................................................. 57 Самостоятельная итоговая работа ................................................... 58
2
Введение в СУБД ACCESS
Методичка не догма, а руководство к действиюi
Н.А.Максимов, ПСНС1, том 2003, стр. 11.04
1. Начало Запуск СУБД (Система Управления Базами Данных) производим ) или меню Пуск ⇒ через ярлык на рабочем столе (изображение ключа Программы. Если и там нет, то найдем ярлык по адресу C:\ Program files\Microsoft Office\Office и ярлык с названием Msaccess (изображение ключа увидите!). В первый и единственный раз в раскрывшемся окне укажем Новая база данных, в следующий раз будем просто открывать уже существующую.
Указать адрес и имя, лучше на С:\student\Ek_21d (нормальное название своей группы!!!)\Товары или Магазин. Базы данных всегда создаются на жестких дисках, имена и адреса присваиваются в самом начале. Это в разных редакторах и процессорах типа Word and Excel все набирается в оперативной памяти, а потом сохраняется на диске. При работе с базами данных сохраняются только части самой БД (таблицы, запросы и т.д.) после их корректировки в режиме Конструктора, но не в виде отдельного файла, а как составная часть одного большого файла БД: для Access с расширением .MDB (Microsoft Data Base), а для большинства других СУБД (FoxPro и др.) как .DBF (Data Base File). При работе в режиме Просмотра (Открытия) сохранение происходит автоматически, при выходе из режима Конструктора требуется разрешение на сохранение введенных изменений, тогда же можно и переименовать или присвоить новое имя элементу БД. Справочная система такая же, как и во всех приложениях Office. Учитесь грамотно и своевременно пользоваться справочной системой, это основа основ при изучении любых программ!!! 1
ПСНС – полное собрание неопубликованных сочинений 3
Ниже приведен стандартный вид окна БД (взят из справки Access 2000!)
Начнем создавать таблицы, они являются основой любой реляционной. БД. Таблицы – они везде таблицы, что в Word, Excel или Access. Только здесь мы должны заранее описать свойства таблиц (список полей и их свойства, их связи в БД), а конкретные данные вводить только после создания структуры таблиц.
4
2. Таблицы Создаем 4 таблицы с полями: 1) Справочник товаров a) Код товара b) Наименование Маленькие хитрости большой БД c) Ед_изм d) Срок хранения В именах полей нельзя 2) Остаток начальный использовать . точку, прямые a) Код товара [квадратные] кавычки, b) Ост_нач восклицательный знак !. Пробелы 3) Поступления допустимы, но не желательны. Имя a) № накладной не может начинаться с пробела. b) Код товара c) Количество d) Дата поступления e) Поставщик 4) Остаток конечный a) Код товара b) Ост_кон Кстати, таблицы почти такие же, какие мы использовали в Excel для получения оборотной ведомости2. Только инструмент другой – Access. Начнем с главной таблицы – Справочника товаров. Будем ориентироваться на создание таблицы в режиме Конструктора.
А это окно БД наше, уже после создания таблиц. Ознакомьтесь, но мы все проделаем неспешно, шаг за шагом, но основательно. Сначала откроем Объект Таблица, у нас три инструмента Создание … и выше просто Создать. Выберем первый: • Создание таблицы в режиме конструктора⇒ раскроется окно таблица1: таблица, поочередно будем вводить имена полей и их свойства: 2
См. Егорова Г.Н., Максимов Н.А.\Excel 2000 и не только…\ 5
Код товара, тип данных - Числовое (выбираем из списка), а в нижнем подокне свойства поля по умолчанию стоит Длинное целое, в Описание напишем: Это поле ключевое, самое главное, каждый ключ уникален! Ключ мы поставим просто: пока активно поле Код (курсор в любой позиции строки) нажмем на инструмент Ключ или контекстное меню ⇒ Ключевое поле (см. картинки ниже). Забегая вперед: При разработке кодов мы будем использовать упрощенный вариант позиционного3 кодирования. Код товара пусть будет трехзначным, где первый знак означает код группы товаров, вторая и третья – код товара внутри группы. Пусть 1-хлебобулочные изделия, 2-бакалейные, 3-кондитерские, 4молочные, 5-мясные и т.д. Примерный вариант см. в таблице Справочник товаров.
Наименование - Текстовое, длина до 30 ( в размер поля 50 зам. на 30) Ед_изм – Текстовое, до 4-х символов, а вот в нижнем окне Свойства поля зададим Значение по умолчанию кг Срок хранения – Числовое, до 120 дней, по умолчанию 1. Свойства полей посмотрите ниже, копии экранов прилагаются с избытком. Каждый кадр отображает свойства одного из полей, обычно по порядку (смотрите на положение курсора в кадре, какое из полей таблицы активно?). 3
Каждая позиция в структуре кода обозначает один независимый признак – фасету, а внутри каждой фасеты – порядковая система кодирования 6
Здесь и далее: наши картинки-копии экрана могут быть чуть сдвинутыми относительно поясняющего текста (из-за попытки рационального размещения на страницах), поэтому смотрите на 1-2 рисунка вперед или назад. Ваша задача – почитывать текст указаний и выполнять все действия по шагам (⇒)4, ориентируясь на рисунки – копии экрана.
Важно: задавая в свойствах полей их показатели, мы облегчаем дальнейшую работу с таблицами при вводе и контроле данных!!! Поэтому не ленитесь задавать их свойства изначально еще на этапе конструирования.
4
Означает следующий шаг или диалоговое окно 7
После всего закроем окно таблицы через X, нас попросят озаглавить ⇒ Справочник. Данные пока не вводим. • Для таблицы Ост_нач будут два поля: Код тов и Ост_нач. Код как ключевое поле, и мы его в свойствах полей укажем как выбор из полей таблицы Справочник, но попозже. А сейчас его тип – Числовое, длинное целое. Ост – тоже Числовое, длинное целое, но совпадения уже допускаются.
• Таблицу Ост_кон – идентично • Для таблицы «Прибыло» (см. рисунки ниже) выберем поля и типы данных.: √ № накладной – Счетчик (автоматическое присвоение номера), ключевое √ Код товара – числовой √ Количество - числовой √ Для поля «Поставщики» сперва выберем тип данных текстовый, а затем самый нижний - мастер подстановок, в появившемся окне укажем «фиксированный набор значений» и введем трех поставщиков в виде таблицы (обычно в устойчивой экономике поставщики уже
8
определились) (см5.). Т.к. основным поставщиком является ОАО «Хлеб», то его оставим по умолчанию. √ Дату поступления также сделаем по умолчанию текущую (Функция Date () без параметра из построителя выражений, можно набрать вручную, а лучше вызвать построитель). Дополнительно ограничим, чтобы введенная дата не превышала текущую (Условие на значение 5 and
0, и закроем, сохранив запрос под именем по умолчанию.
И у нас получится то, что надо.
27
Маленькие хитрости большой БД.
Иногда при создании запросов могут выдаваться сообщения о «невозможности создать запрос из-за неоднозначно определенных связей между таблицами». Ничего страшного – откройте схему данных и удалите ненужные связи и копии таблиц. Они появились автоматически во время наших упражнений. Мы ведь только учимся, а «учиться на собственных ошибках – наша задача, ибо только те знания являются наиболее прочными и фундаментальными, которые получены собственным трудом и умом»9. Маленькие хитрости большой БД. Иногда вместо подобных условий отбора проще в окне запроса переустановить связь по первому типу, когда связанные поля обеих таблиц совпадают. Результат тот же, но самое интересное – типы связей в схеме данных не изменились, а наша новая связь как бы локальная, только для данного запроса. Но об этом я уже где-то говорил… Самостоятельно создайте аналогичный запрос на Остаток товаров конечный, тоже 2 разновидности. Теперь у вас 4 запроса и друг (помощник).
9
Смотри ПСНС, стр.12.11.03 28
Самостоятельная 4.1. Создать запросы на выборку из таблицы Прибыло (наименование из справочника) и озаглавьте Сам411-Сам415: • Всех товаров за сегодняшний день (внутреннее время компьютера) • Всех товаров за вчерашний день • Всех товаров за вчерашний день со сроком хранения 1 сутки • Всех товаров группы 2, поступивших за последний месяц • Всех товаров с усл. отбора по № накл. 0 (имя по умолч.) Запрос 3) 5.2. Перекрестный запрос Перекрестный запрос подсчитывает сумму, среднее, число значений или выполняет другие статистические расчеты, после чего результаты группируются в виде таблицы по двум наборам данных, один из которых определяет заголовки столбцов, а другой — заголовки строк. Более наглядно посмотрим на примере. Но для начала создадим запрос попроще из Справочника и Прибыло: Создать ⇒ Простой запрос ⇒ выбрать Код и Наим из Справ, другие с Прибыло ⇒ Итоговый, Итоги, галочка в поле кол-во на Sum ⇒ выбрать интервал по дате и времени ⇒ просмотр, готово. Получилась примерно такая петрушка. Т.к. в Прибыло много записей с одинаковым кодом, то произошла автоматическая группировка записей по умолчанию – как раз то, что нам надо. В новых именах полей присоединенный индекс First означает, что из нескольких значений высветился лишь первый, зато сумма итоговая по количеству уже подсчитана.
Следуйте инструкциям диалогового окна и никогда не ошибетесь!!! P.S.
Не ошибается только тот, кто ничего не делает
29
А мы сейчас через Конструктор изменим условия отбора и еще раз высветим эту же таблицу.
В условие отбора по полю №накл. поставили 0, поэтому товары с пустыми записями не видны (101, 401,502). Желающие могут открыть 30
таблицу Прибыло или Запрос 3, и убедиться в том, что итоги по каждому товары подсчитаны.
Но это была лишь прелюдия перед настоящим перекрестным запросом. Теперь построим запрос из предыдущего Запроса 3, с раскладкой товаров по всем поступлениям:
Создать ⇒ перекрестный ⇒ выбираем Запрос 3 ⇒ Заголовки строк (Код товара и Наим.).⇒ Заголовки столбцов – Дата пост.⇒ Дата/время ⇒ по кол-во выбираем Сумма ⇒ Запрос3_перекрестный, готово.
31
А теперь в качестве самостоятельной создайте запрос4_перекрестный с колонками Поставщик. (Предварительно создайте простой запрос, чтобы поле Поставщик тоже присутствовало). 5.3. Варианты запросов 5.3.1. Групповые операции. Попробуем создать другой вариант запроса для поступивших товаров, с применением групповых операций: Создать через Конструктор⇒ Выбрать Прибыло и из него 2 поля ( Код товара и кол-во) ⇒ Нажать кнопку Группировка ∑ на панели или через контекстное меню ⇒ для поля Кол-во в строке Групповые операции выбрать Sum⇒ Закрыть, сохр,имя Поступило. Немного лирики из математики Принцип «чайника» Задача 1. Даны пустой чайник, газовая плита, спички, кран с водой. Как вскипятить чай? Решение: 1. открыть кран 2. наполнить чайник водой 3. зажечь плиту 4. поставить чайник на огонь и ждать Задача 2. Даны чайник, наполненный водой; газовая плита, спички, кран с водой. Как вскипятить чай? Решение первое (неправильное): 1. зажечь плиту 2. поставить чайник на огонь и ждать Решение второе (правильное): 1. Вылить воду из чайника, далее как в задаче 1, решать которую мы уже умеем P.S. Сведение задачи к уже известной и есть применение данного принципа. Широко используется математиками и программистами. С их же легкой руки «чайниками» начали называть тех пользователей ЭВМ, кто мыслит слишком шаблонно, кому не ведомы взлеты творческой мысли, не обладает чувством юмора и шуток не понимает. 32
Когда откроем запрос Поступило для просмотра, то будет такая картинка:
Вот здесь можно попробовать немного затронуть построение запросов
через конструкцию SQL – специализированный язык запросов для СУБД не для «чайников» . То, что мы сейчас строили через конструктор – это язык QBE (см. Дополнительные сведения).
А мы для начала попробуем изменить название поля Sum-кол-во на Итого: Вызовем запрос Прибыло через конструктор ⇒ контекстное меню ⇒ режим SQL⇒
33
⇒ в этом окне и меняем «шило на мыло»⇒
⇒ закроем, сохранив изменения и посмотрим: название поля в запросе изменилось. P.S. Таким образом можно корректировать и создавать не один сложный запрос. Иногда изменения проще проводить именно через SQL. Самым эффективным оказывается сочетание SQL и QBE. 5.3.2.
Пустые значения в арифметических операциях (Функция Nz)
Для нашей БД рассмотрим реальную задачу. В некотором магазине введен компьютерный учет всех поставок, раз в месяц производится что-то вроде инвентаризации – известны остатки на начало и конец периода. Но магазин до ежедневного учета каждого проданного товара еще не дорос. Поэтому объем продаж за учетный период будем определять через запрос по формуле Продано = Ост_нач + Поступило (как раз сумма по кол с пред. запроса Поступило) – Ост_кон. Создать ⇒ Простой запрос ⇒ выбор полей из 3 таблиц и 1 запроса (см.)⇒Подробный⇒имя Продано. 34
. Запрос будет выведен, но мы еще не сформировали поле продано. Поэтому зайдем через конструктор в Продано и сформируем поле через построитель.
Вот такая картина. Обратите внимание на связи между таблицами, слегка растащив их вверх и вниз. На самом деле все они связаны через Справочник, а связь с запросом Поступило установлена автоматически, мы ее не создавали, и в схеме данных ее все равно нет!!! Посмотрите, не ленитесь, убедитесь! Этакие связи и есть внутренние в современных реляционных СУБД, они существуют, пока жив сам запрос. Поле Продано сформируем при помощи Построителя (см.), имена полей указываем двойным щелчком, Ок. В имени поля стоит Выражение1: . вместо него напишем свое имя Продано: и сохраним, откроем для просмотра. Когда у вас в окне построителя появляется лишнее выражение, то его просто надо удалять!!! Не для всех товаров подсчитаны по формуле результаты продажи, имеются только для тех, когда во всех трех полях выражения непустые значения. Это проявляется одна из особенностей СУБД: в математических операциях даже при одной пустой (отсутствующей) переменной общий результат выражения не будет подсчитан. 35
Примечание. Если в выражении используются арифметические операторы (+, -, *, /), а одно из полей имеет значение Null, результатом всего выражения тоже будет значение Null. Если какие-либо записи в одном из использованных в выражении полей имеют значение Null, то это значение Null из справочника по Access можно преобразовать в нуль при помощи функции Nz.( )
Но для таких случаев есть функция Nz из категории Преобразования. Еще раз вызовем запрос через Конструктор и исправим наше выражение: Продано: Nz([Остаток начальный])+Nz([Sum-кол-во]) -Nz([Ост_кон])
36
Вот и все. Теперь колонка Продано сформирована для всех товаров. 5.3.3. Запросы с параметрами Часто в запросах условия отбора проще задавать не фиксированные, а вводить при каждом запросе как параметр. Например, при отборе записей из таблицы Прибыло поступления товаров за определенный промежуток времени при каждом запросе задать начальную дату и конечную в условии отбора по полю Дата пост. Само выражение простое: >=[С какого числа] And