Н.А.Максимов
Три источника
и три составные части
Часть 3 Учебный практикум
Самоучитель
Чебоксары 2009
ББК 32.973...
61 downloads
794 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 () без параметра из построителя выражений, можно набрать вручную, а лучше вызвать построитель). Дополнительно ограничим, чтобы введенная дата не превышала текущую (Условие на значение <=Date). Ниже окно построителя и пример выбора встроенной функции Date. Построитель выражений – это
… или знак
на панели инструментов.
Когда пользуетесь построителем, то тщательно выбирайте выражения, удаляйте лишние пробелы
Здесь
Выбрать - 4. что. – извлечь откуда-нибудь все без остатка. В. все запасы (См. Толковый словарь русского языка С.И.Ожегова и Н.Ю.Шведовой)
5
Здесь и далее СМ. означает, что рядом есть соответствующий кадр – изображение экрана 9
Окна выбора поставщиков из списка
Маленькие хитрости большой БД. Access сама ограничивает текстовые
данные двойными кавычками, поэтому в текстовом поле для выражений типа ОАО “Хлеб” лучше применять одинарные кавычки – ‘Хлеб’ или другой разделитель, иначе нам “Хлеб”а не видать…
10
И так, у нас на этот момент описаны свойства полей всех 4-х таблиц. Но мы пойдем дальше: во всех ведомых таблицах значения КОД ТОВАРА будем брать при помощи Мастера подстановок со Справочника. До ввода данных в таблицы через Конструктор (выделить таблицу и нажать на Конструктор) переустановите свойства этого поля во всех трех ведомых таблицах!!! Вариант для таблицы “Остаток конечный» приведен.
Выделить поле код товараJТип данных⇒Мастер подстановок⇒ выбрать …из таблицы или запроса ⇒ Справочник⇒
11
⇒из Справочника выбираем Код товара⇒Готово.
Свойства полей вкладки подстановка создаются автоматически, вводить ничего не надо
Активна вкладка Подстановка
Выражение
Выражение в источнике строк создается автоматически как конструкция SQL6.
Символ означает дополнительную информацию, не для «чайников»: если непонятно – можно пропустить 12
6
В результате будут созданы 4 таблицы (пока пустые). Заполнение таблиц начнем с Главной (ведущей) таблицы – Справочник. Achtung!!! Остальные 3 таблицы заполним только после установления связей между таблицами, т.е. разработки схемы данных. Поэтому сейчас следует go to subroutine (перейти с возвратом) на метку Схема данных (стр. 19 ).
Маленькие хитрости большой БД.
Иногда при вводе данных таблицу не удается закрыть или перейти к другой записи из-за повторяющегося или нулевого значения ключа. Выход прост: введите любой неповторяющийся ключ, выделите строку щелчком на начало и удалите через контекстное меню
Для учебных целей пока все таблицы заполняем один к одному, как на рисунках. 13
Помните, что значение ключа не может быть пустым или повторяться! При заполнении 3 других таблиц попробуйте ввести некорректные данные, чтобы проверить реакцию СУБД (например, дата поступления больше текущей, срок хранения больше 120 и т.д.). В таблицы Ост_ кон и Ост_нач: добавьте самостоятельно 5-7 записей. Естественно, что коды товаров будут выбираться только выбором из списка со справочника. Дата поступления пусть остается внутренней датой компьютера, а не та, которая в рисунке от 2003 года. Когда надо будет – измените или добавите с другой датой при построении запросов. Примерный вид таблицы Прибыло смотри через страницу в Фильтрах таблиц. После всех упражнений таблицы должны иметь примерно следующий вид:
Пусть Вас не смущает вид некоторых таблиц, кнопки раскрытия + и свертывания - автоматически отражают внутренние связи полей между таблицами. Узнаете, но не все сразу…
14
Все изменения свойств таблиц и других объектов выполняются через Конструктор, а ввод-вывод-добавление записей в режиме просмотра (Открыть).
В мире мудрых мыслей BILDUNG MACHT FREI нем. (бильдунг махт фрай) — «Образование делает свободным» (Девиз универсальной энциклопедии и общеобразовательной серии издателя Мейера) RIDENDO DICERE SEVERUM лат. (ридэндо дицере сэвэрум) — шутя, говорить о серьезных вещах (третий девиз серии «Компьютер для Петруши»). FESTINA LENTE лат. [фэстина лэнтэ] — букв. «торопись медленно»; не делай наспех. OHNE HAST, OHNE RAST нем. (оне хаст, оне раст) — без суеты, но и без остановок (Выражение Гете, «Кроткие ксении»).
15
2.1. Фильтры в таблицах Часто в больших базах данных в режиме просмотра таблиц возникает необходимость фильтрации записей по тем или иным условиям. Access представляет прекрасную возможность через встроенные инструменты фильтрации отбирать нужные записи. Для примера откроем таблицу Прибыло ⇒
⇒нажмем на кнопку Изменить фильтр⇒и наберем условие выборки по номеру накладной между 5 и 10 записями (логические операторы знакомы со времен программирования на языках царя Гороха(Or, And, Not, Xor и т.д.) >5 and
<10 ⇒ ⇒ Применение фильтра⇒и получим отфильтрованный список товаров.
Для снятия фильтра кнопка рядом. Для того, чтобы показать поставки от ОАО «Хлеб», нужно по колонке Поставщик выделить строку и 16
применить Фильтр по выделенному. Соседние кнопки служат для сортировки по выбранным полям (у нас по убыванию значения кол-во). Потренируйтесь самостоятельно.
Самостоятельная 2.1. • Выдать список всех товаров, поступивших за вчерашний день • Выдать список всех товаров, поступивших от МУП «Хлебушко» за последний месяц • Выдать список товаров по коду 201 или 301, поступивших вчера Забегая вперед - Фильтры можно применять и для запросов 2.2. Маски ввода Для некоторых типов данных можно создавать и шаблоны для ввода информации (иногда их называют масками). Например, для облегчения ввода даты. При помощи Конструктора откроем таблицу Прибыло⇒для поля дата поступления в Свойствах поля нажмем на Построитель … в Масках ввода(см.)⇒
17
⇒ДА⇒выберем Краткий формат даты, щелчок на Пробу⇒ Готово. Попробуем ввести дату поступления по маске. Введите 3-4 записи, уже достаточно 6-ти цифр через цифровую клавиатуру.
Вот пример попытки ввода 14-го месяца. У кого ума хватит – могут поупражняться и вводом данных за 31 июня. А теперь перескакиваем схему данных (мы там уже были) и Go to на Формы.
18
3. Схема данных Установление связей между таблицами или концептуальной модели базы данных является наиболее ответственным этапом проектирования БД. Попробуем связать все эти таблицы между собой – построим схему данных. Сервис ⇒ схема данных. Основной таблицей будет считаться Справочник, он связывает все другие таблицы через Код товара. Тип связи для Справочника с другими таблицами везде будет по второму типу объединения. Почему нужно именно так – поймете попозже при строительстве запросов. Через этот же справочник все другие таблицы тоже окажутся связанными между собой. Связи, которые строим сами, называются прямыми и отражаются в схеме данных, но иногда СУБД сама может установить прямые связи после неоднозначно определенных запросов по своему разумению и пониманию, по умолчанию первого типа, внутренние. Прямые связи как раз и отражены при открытии таблиц в виде кнопки раскрытия списка + .
У Вас должна быть примерно следующая картина (какие-то связи могут уже быть из-за введения подстановок до установления схемы данных. Эти связи по умолчанию внутренние, по первому типу объединения), но для чистоты эксперимента мы их удалим: выделить мышью линию связи и клавиша Del. Добавим остальные таблицы при помощи контекстного меню Схемы данных и свяжем, как сможем. 19
Левой кнопкой мыши схватить код товара в Справочнике и перетащить на такие же поля код товара в других таблицах (естественно, все эти действия повторить для каждой из таблиц отдельно!)⇒
20
⇒ Обеспечение целостности7⇒ Объединение, а затем из Параметров объединения выберем 2-ой тип (отношения типа 1 : 1 для ключевых полей и 1: ∞ для ключевого и не ключевого полей ставятся автоматически (один-ко-
многим - один и тот же товар может поступать несколько раз за день или несколько дней)⇒ и Создать. Если что-то не так - изменить свойства связи можно через контекстное меню линий связи. После всего этого схема должна выглядеть следующим образом:
7
Это чтобы записи связанных таблиц соответствовали друг другу. Например, для нашей БД нельзя ввести код товара в подчиненные таблицы, если нет соответствующего кода в Справочнике. И, наоборот: при удалении записи со Справочника удаляются все подчиненные записи во всех связанных таблицах, если установлены параметры Каскадное обновление (удаление) связанных полей 21
рис. Схемы данных
(Вот здесь возврат назад к вводу данных в таблицы, стрелочка слева на WEB-панели – для тех, кто пользуется электронной версией самоучителя. Остальным просто вернуться назад на соответствующую страницу 13 брошюры)
22
4. Формы Часто таблицы лучше просматриваются и редактируются в виде Форм. Попробуем создать простые формы для наших таблиц тремя вариантами (пока только ознакомьтесь, задание ниже) : 1. Создать ⇒ Автоформа: в столбец и выбрать таблицу. 2. Создать ⇒ Мастер форм и далее по шагам. 3. Для создания составных, подчиненных форм будут следующие шаги: Создать ⇒ Мастер форм ⇒ выбрать Справочник, ОК ⇒ со Справочника все поля, тут же выбрать таблицу Прибыло, оттуда все записи, кроме кода товара (он уже выбран) ⇒ далее ⇒ Подчиненная форма ⇒ далее ⇒ Табличная ⇒ Стиль ⇒ любой, Готово. В окне Формы появятся две формы (см. рис.). Задание 4.1. Создать для всех таблиц первыми 2 способами (автоформа и Мастер) по одной форме, поупражняться вводом новых записей и редактированием старых, после этого создать подчиненную форму Справочник 1 по шагам варианта 3. Картинки прилагаются. Простые первые 4 формы самостоятельно, вид одной из них приводится. Для подчиненной пояснений больше.
Это простая форма для таблицы Справочник (первые 2 способа), а ниже будут картинки для подчиненной (3 способ). Ниже вариант, как строить подчиненные (связанные между собой) формы. Когда построите формы для таблиц, то попробуйте ввести другие данные, скорректировать старые или удалить некоторые уже через формы.
23
24
Вид подчиненной формы:
Подчиненная форма состоит из двух форм
5. Запросы Запросы – это фактически те же таблицы, только выбранные и сконструированные из разных связанных таблиц в виде одной новой. 5.1. Простые запросы на выборку Запрос на выборку является наиболее часто используемым типом запроса. Запросы этого типа возвращают данные из одной или нескольких таблиц и отображают их в виде таблицы, записи в которой можно обновлять (с некоторыми ограничениями). Запросы на выборку можно также использовать для группировки записей и вычисления сумм, средних значений, подсчета записей и нахождения других типов итоговых значений. Из двух таблиц Справочник и Ост_нач создадим первый запрос. Создать ⇒ простой запрос ⇒ выбрать таблицу Справочник, оттуда Код товара и Наименование, выбрать другую таблицу Ост_нач, оттуда поле Ост ⇒ подробный ⇒ имя неизменим, Готово. Картинки приведены ниже.
25
У Вас должен получиться примерно такой запрос. В данном запросе выдаются все записи из Справочника, но выводить записи с пустым8 значением остатка нерезонно. Поэтому построим другой запрос без пустых записей чуть по-другому, в режиме Конструктора.
Другой вариант того же запроса:
8
Не нулевым, а именно пустым, т.к. не все товары отражены в таблице Ост_нач. Нулевое и пустое в БД – две большие разницы, их можно свести только через функцию Nz. С ней мы еще встретимся… 26
Создание при помощи конструктора ⇒ Поочередно добавим таблицы Справочник и Ост_нач, закрыть, перетащим мышью Код товара со справочника в поле первое (см.), а третье поле (Остаток нач) вставим для разнообразия чуть по-другому: щелчок на пустое третье поле запроса, раскроется список доступных полей, из них и выберем нужный ⇒
⇒Условие отбора >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 <=[по какое]10. Попробуйте. Запрос озаглавьте как Запрос_параметр1. Не забудьте про формат даты: дд.мм.гг Попробуйте и другой вариант определения границ формата Дата: Between [С какого числа] And [по какое]. В качестве параметра запроса может быть любое выражение (поясняющий текст), заключенное в квадратные скобки. Если обратили внимание, то Вы уже догадались, что имена полей в выражениях всегда заключены в квадратные скобки, а если такого имени нет в списке полей - выдается запрос на ввод параметра. Самостоятельная 5.5.3: • Создать запрос-выборку с параметром списка товаров по группе (первый символ в коде товара из Справочника) • Создать запрос-выборку с параметром Список поступивших товаров от поставщика Х за день У 5.4. Запросы на обновление Иногда возникает необходимость обновления таблицы или запроса новыми данными или удаления старых записей. Например, для нашего магазина после каждого решения задачи на учет проданных товаров остаток на конец текущего периода должен стать остатком начальным на следующий период (т.н. переходящий остаток по терминологии бухгалтерского учета). Это можно
10
Именно так, один к одному и набирать! 37
реализовать через Запрос на обновление. Попробуем, но сперва запрос попроще – на удаление. 5.4.1. Запрос на удаление Нам потребуется удаление старых записей из таблицы Прибыло. Дату удаления можно задавать с пульта или сделать автоматическим, используя внутреннее время через функцию Date (). Создать⇒Конструктор⇒добавить таблицу Прибыло⇒выбрать тип запроса удаление и перетащить два поля (* и Дата пост.) на бланк запроса согласно рис.⇒
Добавить условие отбора <[До какой даты удалить]⇒ закрыть, имя пусть Запрос_ Удаление. И попробуйте открыть: Вас обязательно предупредят перед удалением!
38
Будет сообщение о количестве записей на удаление. Если удаляемых записей будет много, то можете отменить и задать другую дату. Даже после удаления записей добавьте (восстановите) заново: нам они еще пригодятся! Параметр подтверждения на обновление записей также пока оставим. 5.4.2. Запрос на обновление Нам надо обновить Ост_кон на Ост_нач следующего периода. Сделаем это в три этапа:
• сначала удалим все записи из Ост_нач старый, • а потом добавим в уже пустую таблицу все записи из Ост_кон, • а сам Ост_кон обнулим (удалим все записи). Но сами таблицы и данные нам могут еще пригодиться, поэтому мы немного схитрим, будем работать только с их копиями. Для этого в режиме таблицы выделить таблицу Ост и через контекстное меню таблицы Сохранить как сохранить как копии (см.).
39
1. Создать⇒Конструктор⇒добавить таблицу Ост_Нач ⇒ выбрать тип запроса удаление и перетащить все поля (*) на бланк запроса ⇒ имя «Удал_ост_нач» 2. Создать⇒Конструктор⇒добавить таблицу Ост_Кон ⇒ выбрать тип запроса Добавление ⇒добавить таблицу Ост_нач и перетащить оба поля в бланк запрос, а в строку Добавление вставить Ост_начальный (см. ниже)⇒ имя «Добавл_ост_нач» 3. Создать ⇒ Конструктор ⇒ добавить таблицу Ост_кон ⇒ выбрать тип запроса удаление и перетащить все поля (*) на бланк запроса ⇒ «Удал_ост_кон»
40
Ну, а теперь попробуйте выполнить эти запросы поочередно.
☺ Конечно, все эти манипуляции с запросами на обновление переходящих остатков несут только учебную нагрузку, потому что на самом деле гораздо проще удалить старый Ост_нач, а новый Ост_кон переименовать, а имена полей в обеих таблицах сделать одинаковыми, просто Остаток.
6. Отчеты Отчеты – это бумажный вариант запросов и таблиц, дополнительно которые можно группировать, итоги подсчитывать и т.д. Поэтому здесь зацикливаться11 не будем, посмотрим 1-2 примера. 6.1.
Остатки на начало
Отчеты ⇒ Создать ⇒ Мастер отчетов⇒ выбрать Запрос1⇒ Все поля⇒ Уровни группировки не добавлять (сейчас не нужны) ⇒ Сортировка по умолчанию по первому полю Код_тов, поэтому просто вперед ⇒ Макет табличный, ориентация книжная, галочка в подборе ширины ⇒ Стиль можно строгий ⇒ Имя Отчет_остнач ⇒ Просмотреть ⇒ Готово.
11
Слово введено в обиход из жаргона программистов ещё в начале 80-ых годов прошлого века. Автор тоже имел отношение к этому «святому делу» развития (или исковеркования?) великого и могучего русского языка 41
Немного приукрасим наш отчет через Конструктор. Окно конструктора отчетов примерно выглядит так:
Слева видна вертикальная панель кнопок, все элементы шаблона графические и подчиняются их законам корректировки: можно перетаскивать при помощи изображения руки, менять размеры и т.д. Мы сейчас заголовок чуть перетащим в центр, раздвинем вниз Примечание отчета, и при помощи ab(поле) будем подсчитывать общий итог.
42
Место для итога подберем под полем Остаток, будет следующая картина. Поле11 – это надпись Итого:, Свободный – поле вычисляемое по формуле Sum(Остаток нач), но для этого применим контекстное меню и в нем Свойства для нашего поля. Сейчас следует щёлкнуть на Поле(ab), нарисовать его местоположение на Примечании отчета, (когда рисуем поле, то слева автоматически будет ставиться его надпись в виде значка Поле такое-то, это внутренние, по умолчанию имена подписей, которые мы можем изменить через Свойства поля)
В мире мудрых мыслей Metodychka not dogma, but guidance to the action англ. (Методичка не догма, а руководство к действию )— (первый девиз серии «Компьютер для Петруши») Sapienti sat лат. (сапиэнти сат) — понимающему достаточно… (второй девиз серии «Компьютер для Петруши»).
43
Если все правильно, то выделим поле11 и тоже через контекстный построитель изменим Подпись поля на Итого:
Закрыть и посмотреть, что-нибудь да высветится… 6.2.
Отчет о поступлениях
Создать ⇒ Мастер отчетов ⇒ выбрать Прибыло и Спр., из них поля Код, Наим., Кол-во, Дата, Поставщик ⇒ Вид представления Прибыло ⇒ Уровни группировки Код ⇒ Сортировку по умолчанию Код (оставить пустым), Итоги – Sum по кол-во, данные и итоги, ОК ⇒ Ступенчатый ⇒ Спокойный ⇒ Прибыло, готово. 44
Посмотрим фрагмент отчета. Он мне не очень нравится. Проще всего отчеты создавать через мастер отчетов из уже готовых запросов, а дальше под свой вкус корректировать при помощи конструктора, что мы и сделаем.
Сейчас вызовем конструктор, Друг уже на месте, он нам поможет...
Немного порисуем: Наименование из области данных через вырезать и вставить или (просто перетащить) поставим в Заголовок группы, Область данных через свойства зальем светлой краской, вместо подписи Sum напишем Всего и т.д., и примерно вот что получим: 45
Фрагмент отчета будет выглядеть так:
А Вы можете приукрасить на свой вкус: разделитель групп, фон и т.д.
Самостоятельные 6.2: • Создать отчет для запроса Продано • Создать отчет для запроса о наличии товаров с истекшим сроком хранения (дата выпуска = дата поступления – 1 день)
7. Макросы Для автоматизации многих операций удобно использование макросов. Что такое макросы и как они работают – почитайте через справочную систему; ключевое слово – макрос. Почитали? Тогда приступим. 46
Для начала создадим три макроса, запускающие три последовательных запроса на upgrade12 Остатков: смотри Запрос на обновление. Макросы ⇒ создать ⇒ Включить кнопку Имена макросов и дать имя Обнова, в колонке Макрокоманды выбрать Сообщение и ниже в аргументах кое-что добавить ⇒
⇒
Дальше смотри на картинки, делай как я и закрой макрос ⇒
12
С английского обновление, модернизация. Пора бы знать, если до БД и макросов добрались… 47
13
⇒
⇒
13
Имена запросов не вводим, а выбираем из списка по смыслу!!! 48
⇒
Запустить макрос можно через кнопку Запуск⇒
Вот и запускайте на здоровье. А если хотите, можно назначить кнопки для запуска, например, внутри какой-то формы. Самостоятельные 7.1: • Создать макросы на открытие отчетов и их свертывание после информационного сообщения
8. Кнопочные формы В приложениях Access можно автоматизировать многие операции, которые в других БД выполняются отдельно, по шагам. Специальный интерфейс приложений делает обслуживание баз данных максимально удобным для «чайников» и любителей кнопочных форм. Для таких целей имеется даже свой Диспетчер кнопочных форм в меню Сервис. Попробуем и мы что-нибудь изобразить…
• Сервис ⇒ Служебные программы ⇒ Диспетчер кнопочных форм ⇒ Создать и будем создавать последовательно 4 кнопочные формы (Поступления, Отчеты, Макросы, Закрыть БД). Они расположатся рядом в Странице кнопочных форм (вам надо будет последовательно 4 раза нажать на Создать и присвоить имя каждой из форм, пока больше ничего). 49
Это экран после четвертого нажатия на Создать
• После этого выделим Main Switchboard ⇒ Изменить ⇒ Создать 4 кнопочные формы с одинаковой у всех командой – Перейти к соответствующей кнопочной форме.
50
• Каждую из форм последовательно выделить ⇒ Изменить ⇒ внутри через Создать создавать переходные кнопки (элементы кнопочных форм). После того, как будут созданы все элементы данной формы (обязательно с кнопкой возврат к кнопочной форме предыдущего уровня!), то окно можно Закрыть и вернуться к предыдущему уровню. А там дальше через Изменить корректировать содержание других кнопочных форм. И так для каждой. Картинки прилагаются.
Если что-то не так – вы всегда можете удалить «не те» формы, только главную не трогайте, пусть живет и процветает во имя Microsoft и Билла Гейтса. Main Switchboard (Default) – это главная кнопочная форма (по умолчанию), его лучше не трогать. Она запускается по умолчанию, а все другие формы входят в нее и управляются ею. Кнопки Вверх и Вниз позволяют менять местоположение элементов внутри формы.
51
А это окончательная форма после некоторых украшений. Рисунки вставляются через Конструктор и контекстное меню, картинки и панель элементов прилагаются. А чтобы она открывалась при каждом открытии БД – можно задать через Сервис параметры запуска (смотри ниже). Если со вставкой рисунков и редактированием не разобрались, то Вам этого и не надо – наверное, просто это не Ваше…
52
53
Дополнительные сведения14 Реляционная модель. Реляционная модель данных предложена сотрудником фирмы IBM Эдгаром Коддом и основывается на понятии отношение (relation). Отношение представляет собой множество элементов, называемых кортежами. Наглядной формой представления отношения является привычная для человеческого восприятия двумерная таблица. Таблица имеет строки (записи) и столбцы (колонки). Каждая строка таблицы имеет одинаковую структуру и состоит из полей. Строкам таблицы соответствуют кортежи, а столбцам – атрибуты отношения. С помощью одной таблицы удобно описывать простейший вид связей между данными, а именно деление одного объекта (явления, сущности, системы), информация о котором храниться в таблице, на множество подобъектов, каждому из которых соответствует строка или запись таблицы. При этом каждый из подобъектов имеет одинаковую структуру или свойства, описываемые соответствующими значениями полей записей. Например, таблица может содержать сведения о группе обучаемых, о каждом из которых известны следующие характеристики: фамилия, имя и отчество, пол, возраст и образование. Поскольку в рамках одной таблицы не удается описать более сложные логические структуры данных из предметной области, применяют связывание таблиц. Физическое размещение данных в реляционных базах на внешних носителях легко осуществляется с помощью обычных файлов. Достоинство реляционной модели данных заключается в простоте, понятности и удобстве физической реализации на ЭВМ. Именно простота и понятность для пользователя явились причиной их широкого использования. Проблемы же эффективности обработки данных этого типа оказались вполне разрешимыми. Основными недостатками реляционной модели являются следующие: отсутствие стандартных средств идентификации отдельных записей и сложность описания иерархических и сетевых связей. Примерами зарубежных реляционных СУБД для ПЭВМ являются следующие: dBaseIII Plus, dBase IY (фирма Ashton - Tate), DB2 (IBM),R:BASE (Microrim), FoxPro, FoxBase (Fox Software), Access (Microsoft). К отечественным СУБД реляционного типа можно отнести системы: ПАЛЬМА (ИК АН УССР), а также система HyTech (МИФИ). Заметим, что последние версии реляционных СУБД имеют некоторые свойства объектно-ориентированных систем. Такие СУБД часто называют объектнореляционными. Примером такой системы можно считать продукты Oracle 8.x. Системы предыдущих версий вплоть до Oracle 7.x. считаются “чисто” реляционными.
Языковые средства современных СУБД – SQL и QBE Сами по себе данные в компьютерной форме не представляют интерес для пользователя, если отсутствует средства доступа к ним. Доступ к данным 14
Для дополнительных занятий, при первоначальном знакомстве можно пропустить 54
осуществляется в виде запросов к базе данных, которые формулируются на стандартном языке запросов. Для большинства СУБД таким языком является язык SQL(Structured Query Language). Если появление и развитие как средства описания доступа к базе данных связано с созданием теории он является стандартом для большинства реляционных СУБД, реляционных баз данных. Основное достоинство этого языка состоит в том, что SQL имеет унифицированный набор инструкций, которые можно использовать во всех СУБД, поддерживающих этот язык. Структурированный язык запросов SQL предназначен для выполнения операций над таблицами (создание, изменение, удаление структуры) и над данными таблиц (выборка, изменение, добавление и удаление), а также некоторых сопутствующих операций. SQL является непроцедурным языком и не содержит операторов управления, организации подпрограмм, ввода-вывода и т.п. В связи с этим SQL автономно не используется, обычно он погружен в среду встроенного языка программирования СУБД (FoxPro СУБД Visual FoxPro, ObjectPAL СУБД Paradox, Visual Basic for Applications СУБД Access). В современных СУБД с интерактивным интерфейсом можно создавать запросы, используя другие средства, например, QBE. Однако применение SQL позволяет повысить скорость и эффективность обработки данных. Например, при подготовке запроса в среде Access можно перейти из окна Конструктора запросов (формулировки запроса по образцу на языке QBE) в окно с эквивалентным оператором SQL и корректировать запрос для более эффективной обработки. Язык SQL не обладает функциями полноценного языка разработки, а ориентирован на доступ к данным, поэтому его включают в состав средств разработки программ. В этом случае он называется встроенным SQL. Стандарт язык SQL поддерживают современные реализации многих языков программирования: PL\1, Ada, C, COBOL, Fortran, Pascal, MUMPS. Различают два основных метода использования встроенного SQL: статический, когда вызов функций языка жестко включается в текст программы после компиляции и динамический, когда заранее неизвестен вид SQL-вызова и запрос выполняется в режиме интерпретации. Основным назначением языка SQL является подготовка и выполнение запросов. В результате выборки данных из одной или нескольких таблиц может быть получено множество записей, называемое представлением. Представление по существу является таблицей, формируемой в результате выполнения запроса. Можно сказать, что оно является разновидностью хранимого запроса. Для удобства работы с представлениями в язык SQL введено понятие курсора. Курсор представляет собой своеобразный указатель, используемый для перемещения по наборам записей при их обработке.
Основные операторы языка Опишем минимальное подмножество языка SQL, опираясь на его реализацию в стандартном интерфейсе ODBC (Open Database Connectivity – совместимость открытых баз данных) фирмы Microsoft. Операторы языка SQL можно условно разделить на два подъязыка: язык определения данных (Data Definition Language – DDL) и язык манипулирования данными (Data Manipulation Language - DML).
Операторы языка SQL 55
Вид
Название Назначение CREATE TABLE Создание таблицы DROP TABLE Удаление таблицы Изменение структуры таблицы ALTER TABLE CREATE INDEX Создание индекса DDL DROP INDEX Удаление индекса CREATE VIEW Создание представления DROP VIEW Удаление представления Назначение привилегий GRAND* REVOKE* Удаление привилегий SELECT Выборка записей UPDATE Изменение записей DML INSERT Вставка новых записей DELETE Удаление записей Следует отметить графическую версию языка SQL – это QBE(Query By Example – язык запросов по образцу). Он превосходно приспособлен к нуждам типичного пользователя. Эти два языка логически сходны, их создание происходило параллельно. Традиционно компьютерные языки являются текстовыми. QBE же являются графическим языком, в котором запросы формулируются посредством графического представления, визуально. С помощью запросов на языке QBE также можно выполнять следующие основные операции: • выборка данных • вычисления над данными • вставку новых записей • удаление записей • модификацию данных Результатом выполнения запроса является новая таблица, называемая ответной (первые две операции), или обновленная исходная таблица (остальные операции). Выборка, вставка, удаление и модификация могут производиться безусловно или в соответствии с условиями, задаваемыми с помощью логических выражений. Вычисления над данными задаются с помощью арифметических выражений и порождают в ответных таблицах новые поля, называемые вычисляемыми. Запросная форма имеет вид таблицы, имя и названия полей которой совпадают с именами и названиями полей соответствующей исходной таблицы. Чтобы узнать имена доступных таблиц БД, в языке QBE предусмотрен запрос на выборку имен таблиц. Названия полей исходной таблицы могут вводиться в шаблон вручную или автоматически. Во втором случае используется запрос на выборку заголовков столбцов. В современных СУБД, например, в Access или Visual FoxPro, многие действия по подготовке запросов выполняются визуально с помощью мыши. Анализ современных СУБД позволяет предположить следующие направления развития языка QBE: 56
•
повышение наглядности и удобства (т.н. прагматический подход к развитии информационных технологий) • появление средств, соответствующих новым возможностям СУБД, например, формулировка неточных или нечетких запросов, манипулирование большими объемами данных • использование новых типов данных (графических, аудио-, видео- и др.) • применение в ближайшем будущем ограниченного естественного языка формулировки запросов • в более отдаленной перспективе использование речевого ввода запросов Принципиальные возможности для перехода к естественному языку общения и средствам речевого ввода есть уже сегодня. Это можно сделать, например, в виде надстройки над существующими СУБД при использовании словарей соответствия терминов ограниченного естественного языка и названий таблиц БД, полей таблиц, операций над данными и другими элементами QBE[2].
Использованная литература 1.
Рекомендуемая литература 2. А.Д.Хомоненко. Базы данных: Учебное пособие / А.Д.Хомоненко, В.М.Цыганков, М.Г.Мальцев. - Санкт-Петербург: Корона, 2002 3. Робинсон С. Microsoft ACCESS 2000: Учебный курс. – СПб.: Питер, 2001
57
Самостоятельная итоговая работа Будем считать, что наш виртуальный магазин дорос до ежедневного учета проданных товаров (закупили кассовые аппараты со сканерами штрих-кодов и соответствующее программное обеспечение). Создать таблицу Продано аналогично Поступлениям, добавить в обе таблицы поля Цена закупки и Цена продажи, включить таблицу в схему данных, из нее удалить уже лишнюю таблицу Ост_кон. Создать запросы, отчеты и формы: 1. Количество и сумма по проданным товарам за день Х 2. Список наиболее продаваемых товаров по объему и сумме продаж за текущий месяц 3. Отчеты о доходах по каждому товару за день, неделю, месяц 4. Запрос о доходах магазина за день Х 5. Запрос-обновление на снижение цены на товары с истекающим сроком хранения 6. Запрос и макрос на ежемесячное обновление Ост_нач 7. Кнопочную форму для просмотра ежедневных, еженедельных и ежемесячных отчетов о доходах магазина (предварительно создать соответствующие запросы и отчеты) 8. Запросы для экономического анализа рентабельности и доходности товаров 9. Кучу других запросов на Ваше и преподавателя усмотрение. Самостоятельно попробуйте создать диаграммы в отчетах (меню Вставка), использовать инструменты Excel для анализа через меню Сервис⇒Связи с Office
Для совершенно «продвинутых» студентов Попробуйте добавить в схему данных таблицы и связи для финансовых расчетов с поставщиками товаров, используя закупочные цены и продажные, а также санкции за некачественные и поощрения за продаваемые товары согласно договорам поставок.
58
Из юмора программистов ☺ На чемпионате мира по женской логике с большим отрывом победил
генератор случайных чисел.
☺ Идет папа с сыном по зоопарку. Вдруг сынок кричит: - «Папа, смотри -
программисты!!!»- и показывает на клетку с гориллами. Папа: :-??? Сынок: "Волосатые, небритые и мозоль на заднице".
☺ Ложась спать, программист ставит рядом на столик 2 стакана. Один с
водой - если захочет пить, второй пустой - если не захочет.
☺ Тонет программист: F1! F1! F1! ☺ Едут в купе поезда четыре пользователя. На каждого по билету. В
соседнем купе едут четыре системных программиста. У них на всех только один билет. Ожидается приход контролера. Системные программисты закрываются в туалете. Приходит контролер. проверяет билеты у пользователей и подходит к туалету. Стучит. Из двери высовывается рука и протягивает билет. Контролер проверяет его и уходит. Едут обратно те же две компании, только на всех пользователей один билет, а на всех программистов ни одного билета. Приходит контролер. Пользователи закрываются в туалете. Системные программисты стучатся к ним. Из-за двери высовывается рука с билетом. Системные программисты забирают билет и закрываются в другом туалете. Приходит контролер…
Вывод: Не всякий алгоритм, разработанный системным программистом, подходит для применения обычным пользователем.
☺ Чем отличается начинающий программист от законченного?
Начинающий думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.
☺ Абсолютно правдивая история, которую я видел на практике студентов
НГУ, из которых пытались сделать user-ов. Преподаватель рассказывал, как работать в Excel, а студенты (кстати, 4-й курс, правда, гуманитарии) делали то же самое на компьютере. И тут я вижу (в это время отлаживал какую-то программу), одна девочка занервничала и хочет что-то спросить. Преподаватель подошел к ней, и тут она выдает следующий «шедевр»: Как двигаться мышкой дальше, если кончился коврик?
☺ Окончил я институт и устроился на работу, и на второй день (H)ачальник
отдела у меня спросил: H - Ты сильный программист? Я - Ну, как сказать... H - Ну, сильный? Я - В общем, да. H - Тогда займешься перетаскиванием компьютеров…
59
Серия «Компьютер для Петруши»
Учколлектор 428003 г. Чебоксары, Школьный проезд, 6а Тел./факс: (8352) 21-24-75, 21-08-55, 62-85-57, 62-84-91 Книги, тетради Школьные принадлежности Учебники на СD
В серии вышли и выходят: Самоучитель по DOC и NC , Excel 7.0 и не только ... ACCESS 2000 Текстовые редакторы Excel 2000 и не только…
Microsoft OFFICE. Учебный практикум (в трех частях) Азбука программирования на Visual Basic Учебно-методические пособия серии "Компьютер для Петруши" отличаются оригинальной методикой для самостоятельного изучения программных продуктов, сочетающей в себе легкость изложения и глубину освоения, доступность для начинающих и пользу для опытных пользователей Печатается без согласования с Microsoft. Билла Гейтс отдыхает…
ул.139-й Стрелковой див, 22
℡ 418-202 Идеальный компьютер – цена это индивидуальное решение с качеств оптимальным соотношением Продажа и сервисное обслуживание Квалифицированные советы в подборе конфигурации
Различные кредитные с х е м ы
Книги серии можно купить и заказать в магазинах и компьютерных фирмах:
428023 Чебоксары, ул. Максимова,13
Союз К ℡ 34-66-30 428018 Чебоксары, ул. Водопроводная, 22 Мир книг ℡ 421-024, 420304
428003 г. Чебоксары, Школьный проезд, 6а Учколлектор ℡ (8352) 21-24-75, 21-08-55,
Подписано в печать 31.01.2009. Формат 60×90/84. Печать оперативная. Усл. печ. л. 3,5. Уч.-изд. л. 3,75. Тираж эксклюзивный. ООО «HAMER’JAL»
☺ i Первый девиз серии «Компьютер для Петруши»