Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Базы данных. Практикум

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

6.3. Макетирование отчетов

Создание макета отчета является более кропотливой работой, не- жели создание макета формы. Если размеры формы, ее разделов и элементов управления в режиме конструктора и в режиме вывода формы на экран практически одинаковы как по горизонтали, так и по вертикали, то для отчета заранее оценить вертикальные размеры не- возможно.

Почему так? Во-первых, заранее неизвестно число выводимых за- писей в источнике данных для отчета. Во-вторых, почти все состав- ляющие отчета (разделы, элементы управления) имеют возможности подгонки вертикальных размеров под выводимые в них данные. Из последнего вытекает, что размер по вертикали, требуемый для выво- да одной записи, будет изменяться в зависимости от длины данных в полях записей.

С размерами по горизонтали тоже не все просто. Если горизон- тальные размеры формы больше размеров экрана, вы просто исполь- зуете горизонтальную прокрутку. Поскольку отчет привязан к выво- ду на печать, для него задается ширина страницы. При ширине отче- та, превышающей размер страницы, на печать выводится та часть отчета, которая помещается на странице по горизонтали, а то, что осталось, выводится на следующую страницу. Даже если в данный размер страницы не поместился последний пробел в строке, он будет перенесен на следующую страницу и распечатанный отчет будет пе- ремежаться пустыми страницами.

Конечно, это не всегда минус. Если вам нужен отчет, который не помещается даже на горизонтальном развороте формата А4, можно склеивать полученные части.

В заключение упомянем о размещении объектов. Их положение друг относительно друга на макете существенно отличается от поло- жения на напечатанной странице. Дело в том, что с одной стороны, разрешение хорошего принтера выше, чем у типового экрана, а с другой стороны, имеют место различимые глазом «кинематические» погрешности перемещения бумаги в процессе печати. К этому до- бавляются еще и погрешности преобразования сантиметров в твипы. В результате при выводе на печать вы часто будете обнаруживать, что проведенная на макете в режиме конструктора линия, распола- гавшаяся там, где ей должно быть, на печати «заезжает» на данные или, наоборот, оставляет пустые места.

Одной из основных (и наиболее занудных) проблем при построе- нии отчета является проблема того, как поместить всю нужную ин-

71

формацию по ширине страницы, сохранив при этом если не элегант- ность, то хотя бы удобочитаемость. Поэтому в отчетах очень важную роль играют свойства Расширение и Сжатие. Задав поле расширяе- мым, вы добьетесь того что, скажем, самое длинное название фирмы будет выведено на экран полностью, хотя и в несколько строк. Един- ственной проблемой остается то, что, если некоторое слово в выво- димом тексте настолько длинно, что не помещается в строке поля, оно переносится произвольным образом, причем без всяких знаков переноса.

Еще одна проблема связана с переходом со страницы на страницу в длинных отчетах. Свойство Не разрывать применяется только к разделу в целом, и нет никакой гарантии, что запись, занимающая несколько строк, будет размещена на одной странице.

Бороться со всеми этими рутинными проблемами достаточно тя- жело. Основной метод здесь состоит в выводе отчета на экран в ре- жиме предварительного просмотра, обнаружении неполадок, правке и новом выводе на экран.

72

7. РЕАЛИЗАЦИЯ УПРАВЛЕНИЯ ПРИЛОЖЕНИЕМ

Основными средствами управления приложением в режиме диалога являются формы. Посмотрим, как это делается. Стандартный метод со- стоит в создании главной формы приложения, которая содержит только органы управления и задания режимов. Это означает, что на такой фор- ме обязательно присутствуют кнопки и, возможно, переключатели.

Кнопки запускают основные операции системы, почти всегда свя- занные с выводом каких-то форм. Выводимая по нажатию кнопки форма может снова содержать в основном органы управления, а мо- жет и данные. Можно было бы говорить о разделении форм на два класса управляющие формы и формы данных, однако чаще форма комбинирует управление и обмен данными с приложением.

В качестве примера приведем возможный вид главной формы из приложения торговой системы, которая выводится на экран при за- пуске системы (рис. 33).

Рис. 33. Главная форма

Сразу оговоримся, что вопросы дизайна формы нас не интересуют (это дело вкуса разработчиков).

Рассмотрим основную операцию оформление заказов. Переклю- чателем задается ввод новой заявки или работа с уже существующей. При нажатии кнопки «Заказы» на экране появляется диалоговая форма «Заказы», содержащая данные по конкретному заказу, если была выбрана опция «Работа с заказом» (рис. 34), или эта же форма без данных, если была выбрана опция «Новый заказ».

73

Рис. 34. Форма для работы с заказом

Форма «Заказы» уже содержит данные. Кроме того, на ней имеет- ся несколько управляющих кнопок. Кнопка «№ счета» позволяет ав- томатически присваивать следующий номер счета в системе, но только для вновь создаваемого заказа.

Кнопка «Вывод счета» служит дня вывода на печать счета. Кноп- ка «Выписка накладных» открывает новую, столь же насыщенную форму, позволяющую выписывать по данному заказу одну или не- сколько накладных.

В нижней части экрана выводится ленточная форма с описанием заказанных товаров.

Теперь вновь вернемся к обсуждению главной формы (рис. 33). На первый взгляд кажется излишней кнопка «Просмотр заказов». Однако с ее помощью можно открыть ленточную форму для удобно- го выбора заказа.

Выбрав нужный заказ, ее можно открыть кнопкой «Заказы». Функция кнопки «Оплата счетов» в пояснении не нуждается, а с по- мощью кнопки «Сводки» можно сформировать отчет по базе данных.

Особо следует остановиться на реализации переключателей на главной форме. На практике в большинстве случаев они служат для наглядного ввода-вывода логических данных. Здесь они играют роль управления кнопкой, т.е. ни к каким реальным данным в базе данных

74

они не привязываются. Это достигается следующим образом. В ре- жиме конструктора вызываются свойства кнопки. В окне «Кнопка» на вкладыше «События» задается процедура на нажатие кнопки (в открывающемся окне Visual Basic).

Применительно к нашему примеру код процедуры, позволяющей открывать разные формы при нажатии кнопки в зависимости от ак- тивизированных переключателей с именами PerekRab и PerekNov, может быть такой:

Private Sub Кнопка_Click()

If Me!PerekRab.Value = True Then

DoCmd.OpenForm "Работа с заказом"

End If

If Me!PerekNov.Value = True Then

DoCmd.OpenForm "Новый заказ"

End If

End Sub

Для автоматического вывода на экран главной управляющей фор- мы (рис. 33) может быть использован макрос Autoexec, как правило, включающий три макрокоманды.

Первая макрокоманда макроса убирает с экрана главное окно баз данных, чтобы в него случайно не залез пользователь, вторая откры- вает главную управляющую форму приложения, а третья убирает с экрана штатную панель инструментов.

Однако аналогичного эффекта легко добиться, если воспользоваться основным меню и выбрать пункты Сервис / Параметры запуска, за- дав параметры, определяющие три указанные выше операции.

В заключение вопроса о реализации управления приложением от- метим, что последовательная реализация управления посредством форм имеет много преимуществ, однако недостатки есть и здесь. В более или менее сложном приложении число элементов управления на каждой форме увеличивается. Это приводит к следующим непри- ятным последствиям.

1.Элементы управления занимают все большую часть формы, и для данных места остается все меньше. Если переходить на много- страничную форму, это резко снижает интуитивность интерфейса.

2.Большое количество кнопок на форме также снижает нагляд- ность управления, у пользователя просто начинает рябить в глазах.

3.Используя управление посредством форм, вы приучаете и поль- зователя и себя к уникальности каждого приложения. Вместо того, чтобы привыкать к стандартам Windows-приложений и их интерфей- са, пользователь каждое новое приложение осваивает заново.

75

ЗАКЛЮЧЕНИЕ

В качестве заключения начинающим разработчикам можно дать три основных практических совета.

1.Не следует воспринимать примеры проектирования (представ- ленные в данном практикуме и в любой другой литературе), как па- нацею на все случаи жизни. Следует помнить, что любое (даже под- час ничтожное) изменение описания предметной области может по- ставить проект «с ног на голову».

2.Чтобы научиться проектировать совершенно недостаточно вы- полнить этот процесс умозрительно. Нужна его тщательная прора- ботка сначала на бумаге, а потом непосредственно за компьютером. При этом нельзя недооценивать первую фазу проработку на бумаге (хотя многие ошибочно считают это «бумаготворчеством»). Скурпу- лезно должны быть расписаны (нарисованы) схемы БД, структуры таблиц, содержание запросов, вид форм и т.д. Хороший проект на бумаге, как правило, приводит к лучшим результатам.

3.Следует придерживаться изложенного выше порядка проекти- рования. И, главное, не надо «бежать впереди паровоза», т.е. начи- нать проектирование, толком не разобравшись в предметной области

итребованиях к приложению. К сожалению, это очевидное правило даже достаточно опытные разработчики часто нарушают. В резуль- тате кажущееся начальное ускорение на практике оборачивается тя- желыми последствиями: по мере уяснения требований к приложению приходится многое переделывать или просто начинать с нуля.

76

ЗАДАНИЯ ДЛЯ САМОПРОВЕРКИ

Задание 1

1. Спроектируйте схему базы данных для хранения накладных

(рис. 35).

 

 

Накладная

от 00/00/00

 

ЗАО «АВС»

 

 

 

 

 

 

 

 

Поставщик:

 

 

 

 

 

 

 

 

ЗАО «LLL»

 

 

 

 

 

 

 

 

Покупатель:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Номенклатура

 

Цена

 

Количество

Сумма

1

Марля

 

125.00

 

10

 

1250.00

2

Зубная паста

 

20.00

 

100

 

2000.00

 

 

 

 

 

 

 

 

Итого

 

 

 

 

 

 

 

3250.00

Всего наименований 2

 

 

 

 

 

 

 

 

 

Рис.35 Форма накладной

 

Задание 2

1.Спроектируйте схему базы данных для хранения информации об упаковочных ярлыках (рис. 36). Проанализируйте поля, определи- те состав таблиц.

2.Напишите SQL-операторы для создания таблиц базы данных. (Использовать каскадное удаление в связанных таблицах).

Упаковочный ярлык

АВС

Организация, адрес Отделение подъемных механизмов

Структурные подразделения

Сертификат

 

 

 

 

Номер

 

Срок действия

 

 

 

 

с

по

 

 

 

 

 

 

 

 

145-3

 

01.10.98

01.12.08

 

 

 

 

 

 

 

 

Товар

 

Единица измерения

Количество

Масса

Домкрат

 

шт.

 

100

 

Упаковщица Сидорова А.И.

Рис. 36. Форма упаковочного ярлыка

77

Задание 3

1.Спроектируйте схему базы данных для хранения товарных на- кладных (рис. 37).

2.Разработайте триггеры для удаления данных в связанных таб- лицах.

3.Напишите оператор Select, который формирует отчёт обо

всех накладных на внутреннее перемещение и спецификации, отно- сящиеся к ним. Шапка должна включать номер товарной накладной, дату формирования и название номенклатуры, количество, цену.

ЗАО «Дороги России» Грузоотправитель: ОАО «Старт»

Товарная накладная

 

 

 

 

 

 

Номер документа

 

Дата составления

 

 

 

 

 

 

1-16

 

 

 

 

01.12.07

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Товар

Единица

Вид

 

Масса

Количе-

 

Цена,

Сумма

 

НДС

Сумма

 

 

измерения

фасовки

 

брутто

ство

 

руб.

 

 

 

 

(18%)

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

НДС

 

Репа

кг

мешок

 

 

1000

 

50

50000

 

5000

55000

 

Подпись Иванов И.И.

 

 

 

 

 

На сумму

50000

 

 

 

 

 

 

Рис. 37. Товарная накладная

 

 

 

 

 

 

 

 

Задание 4

1.Создайте базу данных для хранения накладных на внутренне перемещение (рис. 38). Напишите SQL-операторы для создания таб- лиц базы данных.

2.Создайте форму, внизу которой разместите подчиненную таб- личную форму с описанием товаров.

3.Напишите оператор Select, который формирует отчёт с сум-

марной стоимостью спецификации по товарным накладным. 4.Напишите запрос на увеличение цены каждой номенклатуры на

десять процентов.

78

Накладная на внутреннее перемещение, передачу товаров

 

 

 

 

 

 

 

 

 

Номер документа

Дата составления

 

 

 

 

 

 

 

 

 

1-678

 

 

01.12.05

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Отправитель

 

 

 

Получатель

 

 

 

 

 

Код анали-

Структурное

 

Вид

Структурное

 

Вид деятельно-

 

 

тического

подразделение

 

деятельности

подразделение

 

сти

 

 

учёта

Каптерка 1

 

Складирование

Каптерка 2

 

Складирование

 

 

009

 

 

 

 

 

 

полуфабрикатов

 

 

 

 

полуфабрикатов

 

 

 

 

 

 

 

 

 

 

Цена, руб.

 

 

 

 

Товар

 

Сорт

 

Единица измерения

Количество

 

 

Сумма

Молоко

 

1

 

л

 

1000

 

 

30

 

 

30000

 

Отпустил

 

Сидоров Ф.Ф.

 

 

 

 

 

На сумму

30000

 

Принял

 

Сидоров В.В.

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 38. Форма накладной на внутреннее перемещение

Задание 5

1.Создайте базу данных для хранения распоряжений на отпуск потребителю (рис. 39).

2.Напишите SQL-операторы для создания таблиц базы данных.

3.Разработайте триггеры для удаления данных.

4.Разработайте форму с вычисляемыми полями для вывода дан- ных «Сумма» и «Итого».

5.Сформируйте отчеты по отпуску товаров определенной но- менклатуры.

Распоряжение на отпуск № 100

Грузоотправитель: ЗАО «Финиш» Адрес грузоотправителя: Склад 7 Грузополучатель:

Номенклатура

Единица

Количество

Цена,

Сумма

 

 

 

измерения

 

Руб.

 

 

Сыр «ВиолаЭ

шт

100

30

 

 

3000

 

Сырок «Дружба»

шт

200

5

 

 

1000

 

Итого: 4000

 

 

 

 

 

 

В т.ч. НДС: 800

 

 

 

 

 

 

Руководитель предприятия: Шишкин Ш.Ш.

 

 

 

 

 

 

 

 

 

 

 

 

 

Груз отпустил: Мишин М.М.

Груз получил: Петров П.П.

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 39. Форма распоряжения на отпуск

79

Задание 6

Разработайте информационную систему «ГРАНТ», предназначен- ную для хранения информации о ходе исполнения и финансирования научных работ.

Вся информация о грантах хранится в четырёх таблицах: «ГРАНТ», «ПЛАТЁЖ», «АНКЕТА», «ВЕДОМОСТЬ».

В табл. 9 «ГРАНТ» содержатся паспортные данные гранта.

 

 

 

 

 

Таблица 9

 

 

«ГРАНТ»

 

 

 

 

 

 

 

 

Наименование гранта

Номер

 

Вид проекта

Дата

Дата

 

гранта

 

 

начала

окончания

Когнитивные роботы

GR_1223

 

Исследовательский

01.07.02

01.12.03

Организация конферен-

GR_1567

 

Конференция

01.07.02

01.12.04

ции по хранению графи-

 

 

 

 

 

ческой информации

 

 

 

 

 

Исследование курганов

GR_1445

 

Экспедиция

01.07.01

01.07.02

Тверской области

 

 

 

 

 

Болезни аквариумных

GR_6665

 

Исследовательский

01.07.02

01.07.05

рыбок

 

 

 

 

 

В табл. 10 «ПЛАТЁЖ» заносятся суммы поступлений денежных средств по грантам.

 

 

 

 

 

 

 

 

Таблица 10

 

 

«ПЛАТЁЖ»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наименование гранта

 

 

 

Номер

Сумма

Дата поступ-

 

 

 

 

 

гранта

 

ления

Когнитивные роботы

 

 

 

GR_1223

500000

01.07.02

 

Когнитивные роботы

 

 

 

GR_1223

500000

01.10.02

 

Организация конференции по хранению

 

GR_1567

200000

01.07.02

 

графической информации

 

 

 

 

 

 

 

 

Исследование курганов Тверской области

 

 

 

30000

01.09.01

 

Исследование курганов Тверской области

 

GR_1445

300000

01.07.01

 

Болезни аквариумных рыбок

 

 

GR_6665

520000

01.07.01

 

Анкетные данные исполнителей грантов будут представлены в

табл. 11 «АНКЕТА».

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 11

 

 

«АНКЕТА»

 

 

 

 

 

 

 

 

 

 

 

Фамилия

Имя

Отчество

Дата рождения

Табельный номер

Пол

 

Перов

Александр

Иванович

02.07.76

 

122345

 

Муж

 

80

 

 

 

 

 

 

 

 

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]