4.3 Практическая работа №3 Тема: Проектирование форм базы данных. Цель практической работы Научиться проектировать и создавать формы ввода информации в базу данных для решения конкретной экономической задачи в соответствии с индивидуальным вариантом.
После выполнения практической работы студент должен:
Знать: назначение форм в проектировании БД, рассмотреть пример создания формы однотабличной для классификатора, многотабличной для ввода оперативной информации .
Уметь: создавать формы с помощью мастера, с помощью конструктора.
Время выполнения - 2 часа.
Пояснения к работе Порядок выполнения практической работы:
1. Проработать все описанные упражнения самостоятельно, руководствуясь методическими указаниями,
2. Выполнить задание, создать формы ввода информации для своего варианта.
3. Проверить свои знания по контрольным вопросам.
Предварительная подготовка
Формы
Существует два формата отображения содержимого таблицы – в виде таблицы и в виде формы. Формы являются мощным и гибким средством представления информации. Например, при разработке законченного приложения по бухгалтерии можно создать ряд форм, которые будут выглядеть на экране монитора точно так же, как стандартные бланки бухгалтерских документов. Макет формы строится из элементов управления, расположенных на Панели элементов(Form Controls). Панель выводится на экран с помощью команды меню ViewToolbars. Для формы, связанной с одной таблицей или представ-лением, область данных может иметь вид: в один столбец, ленточная, табличная. Многотабличные формы содержат одну главную и несколько подчиненных таблиц. Наиболее просто форму создать с помощью Мастера форм. При выборе полей следует руководствоваться необходи-мостью каждого выбранного поля для построения формы. Ключи связи таблиц выбираются из главной таблицы. Состав полей должен обес-печивать необходимые действия в форме. При создании многотабличной формы «главной » объявляется таблица с учетом схемы данных и специфики обработки данных через форму. Формы учитывают специи-фику информации и характер работы с данными. Так, для справочников создаются однотабличные формы, которые обеспечивают ввод и редак-тирование записей справочника. Для оперативной информации создаются формы, обеспечивающие ввод и редактирование оперативной информа-ции, автоматическое заполнение справочной информации путем ее выбора из списка возможных значений. Создаются формы, в которых обеспечивается подготовки параметров для отчета или запроса.
Создадим форму для ввода и редактирования справочника. Такие формы в нашем проекте: склад, персонал, должность, ингредиенты блюда. При создании экранной формы используют мастер или конструктор форм. Предпочтительно создать сначала стандартную форму с использованием Wizard Form(Мастера форм), а затем преобразовать ее с помощью Form Designer(Конструктор форм).
В примере используя мастер форм создадим форму для редактирования таблицы Персонал.dbf. в результате получим стандарт-ную форму Персонал.scx, показанную на рисунке для усовершенство-вания формы используем конструктор форм. При работе с ним, прежде всего, определим среду окружения, т. е. выберем таблицы для построения формы и установим отношения между ними.
МАСТЕР ФОРМ – Form Wizard позволяет создать форму в виде набора полей для работы с данными одной таблицы. Основное достоинство Мастера форм заключается в создании функционально законченного элемента пользовательского приложения, который имеет все необходимые средства просмотра, поиска и редактирования данных.
Создайте форму персонал.scx, в которой будут содержаться поля Вашей таблицы персонал.dbf. Для этого выполните следующие действия:
Откройте проект ресторан;
Нажмите ярлык Documents в диспетчере проектов для перехода на вкладку Documents;
Затем выберите группу Forms и нажмите кнопку New в результате чего откроется окно диалога New Form;
Выберите опцию Form Wizard;
Вы запустили мастер форм для построения форм.
На экране откроется окно диалога Wizard Selection с помощью которого Вы должны указать, создаете Вы форму для одной таблицы или нескольких связанных таблиц. По умолчанию предполагается создание однотабличной формы. Для перехода к следующему шагу нажмите кнопку OK.
Теперь выберите таблицу персонал и все поля этой таблицы (которые будут размещены в форме). Для выбора БД и содержащейся в ней таблицы используются два списка, расположенные в области “Databases and tables”.
Если в данный момент открытые БД и таблицы отсутствуют или открыты не те таблицы, которые Вы предполагаете использовать для построения формы, то эти списки пусты или содержат совсем не ту информацию, которая Вам нужна. Для выбора требуемой таблицы нажмите кнопку, расположенную, рядом с кнопкой раскрытия списка БД. На экране откроется окно диалога Open, позволяющее найти таблицу, которая будет использоваться в форме. Выберите каталог, затем требуемую таблицу и нажмите кнопку OK.
После выбора таблицы список Available Fields содержит список полей открытой таблицы. Из данного перечня перенесите все поля, используя кнопки со стрелками, в список Selected Fields.
Нажмите кнопку Next.
Установите стиль отображения объектов формы Embossed и тип кнопок управления Picture Buttons.
Список Style содержит шесть различных вариантов отображения объектов (полей, линий, заголовков и т.д.) в форме. Мастер форм позволяет при выборе каждого из стилей просмотреть результаты в верхней части окна диалога.
Опции переключателя Button Type позволяют выбрать тип отображения кнопок управления.
Таблица 2
Кнопка
| Тип отображения
| Text Buttons
| кнопки управления содержат текстовые надписи
| Picture Buttons
| кнопки управления содержат изображения
| No Buttons
| кнопки управления в форме отсутствуют
| Custom
| в форме размещается пять кнопок управления: Find, Print, Add, Delete, Exit. Перемещение по записям осуществляется с помощью располагаемой в форме линейки прокрутки.
| После того как Вы установите опции и нажмите кнопку Next. Вы можете выбрать опции по Вашему усмотрению.
На третьем шаге укажите критерий сортировки данных при отображении в форме. Упорядочение осуществляется по полям, перчисленным в списке Selected Fields. Для переноса поля из списка Available Fields or index tag в список Selected Fields, установите курсор на поле, по значению которого требуется упорядочение данных, в нашем случае – Фио, и нажмите кнопку Add. Если Вы ошибочно перенесли не то поле, для его удаления из списка Selected Fields воспользуйтесь кнопкой Remove.
Опции Ascending и Descending определяют, по возрастанию или по убыванию будут упорядочиваться данные в выбранном поле.
Для перехода к следующему шагу создания формы нажмите кнопку Next.
В заключение создания формы задайте заголовок формы “ персонал ” в поле Type a title for your form и выберите один из возможных вариантов продолжения работы над формой - Save and run form.
Таблица 3
Опция | Действие
| Save form for later use
| Сохраняет созданную форму
| Save and run form
| Сохраняет созданную форму и запускает ее на выполнение
| Save form and modify it in the Form Designer
| Сохраняет созданную форму и открывает ее в конструкторе форм для модификации
| После установки требуемых опций нажмите кнопку Finish. В открывшемся окне диалога Save as выберите каталог и введите имя созданной формы – персонал c расширением по умолчанию .scx. Ваша программа запуститься на выполнение, с действием каждой кнопки. Ознакомьтесь самостоятельно. Чтобы выйти из программы нажмите кнопку Exit.
Создадим многотабличную форму, которая обеспечивает ввод и редактирование записей в главной таблице Заказ и подчиненных таблицах Заказ_блюда и Склад с помощью конструктора форм Создайте форму примерно такого вида, как показано на рис. 12
Свойства отношений между таблицами в окне data Environment (см. рис 13) представлены в табл. 4
Рис. 12. Размещение объектов на форме
Рис. 13. View/data Environment
Таблица 4 name
| Relation1
|
| ChildAlias
| Заказ_блюда
|
| ChildOrder
| кодзаказа
|
| OneToMany
| .T.
|
| ParentAlias
| Заказ
|
| name
| Relation2
|
| ChildAlias
| Персонал
|
| ChildOrder
| Фио
|
| OneToMany
| .Т.
|
| ParentAlias
| Заказ
|
| name
| Relation3
|
| ChildAlias
| Стоимость
|
| ChildOrder
| Блюдо
|
| OneToMany
| .Т.
|
| ParentAlias
| Заказ_блюда
|
| Определите (используя окно Properties (Свойства) свойства каждого объекта, размещенного на форме, пользуясь таблицей 5.
Таблица 5
Элемент управления
| Свойство
| Значение
| Комментарии
| Форма
| capition
| форма ввода заказа
|
|
| Data sessin
| 2-private data session
|
|
| name
| Form1
|
| Commandgroup1
| name
| CmdTop
|
|
| name
| CmdNext
|
|
| name
| cmdPrev
|
|
| name
| cmdEnd
|
|
| name
| cmdExit
|
|
| name
| Cmdadd
|
|
| name
| Cmdadd2
|
| commandbutton
| name
| cmdRas
|
|
| capition
| расход
|
|
| name
| Cmdsena
|
|
| capition
| стоимость
|
| Grid1
| Columncount
| 4
|
| Column1,header1
| capition
| Код заказа
|
| name
| Header1
|
| Column1,textbox
| name
| Txtcol1
|
| controlsource
| Заказ_блюда.кодзаказа
|
| Column2,header2
| capition
| Название блюда
|
| name
| Header2
|
| Column2,textbox
| name
| Txtcol2
|
| controlsource
| Заказ_блюда.блюдо
|
| Column3,header3
| capition
| Количество порций
|
| name
| Header3
|
| Column3,textbox
| name
| Txtcol3
|
| controlsource
| Заказ_блюда.порции
|
| Column4,header4
| capition
| Стоимость блюда
|
| name
| Header4
|
| Окончание табл. 5
| Column4,textbox
| name
| Txtcol1
|
| controlsource
| Стоимость.sum
|
| spinner
| Name
| Spinner1
|
| controlsource
| заказ.кодзаказа
| Выбор в качестве источника числового поля
| SpinnerHighValue
| 2500
| Задание максимального вводимого числа
| SpinnerLowValue
| 0
| Задание минимальногоо вводимого числа
| Increment
| 1.00
| Определение шага, с которым будет будет автоматически изменяться значение числового поля
| textbox
| Name
| txtдатазаказа
|
| ControlSource
| заказ.датазаказа
|
| Combobox
Для работы со
списком значений
| ControlSource
| заказ.фио
| Выбор поля из списка при RowSourceType=Fields
| Name
| Combo1
|
| RowSourceType
| 6-fields
| Устанавливает тип источника
| RowSource
| персонал.фио
| Имеет одно из дву
| textbox
| name
| txtSum
|
| label
| capition
| Номер заказа
|
|
| capition
| Дата заказа
|
|
| capition
| официант
|
| Двойными щелчками левой кнопки мыши заходите в окошки кодов для каждого объекта и записывайте коды (программы, вызываемые событиями – нажатием кнопок, передвижением ползунков линеек прокрутки, выбором позиции меню и т.п.)
Коды, которые нужно записать для кнопки cmdTop:
Procedure cmdtop.click
select заказ
IF NOT BOF()
GO TOP
ENDIF
_SCREEN.ACTIVEFORM.REFRESH()
THISfORM.REFRESH()
*THISfORM.PARENT.BUTTONREFRESH()
Коды, которые нужно записать для кнопки cmdTop:
Procedure cmdnext.click
select заказ
IF NOT EOF()
SKIP
IF EOF()
GO BOTTOM
ENDIF
ENDIF
THISFORM.REFRESH()
*THISFORM.PARENT.BUTTON.REFRESH
*_SCREEN.ACTIVEFORM.REFRESH()
Коды, которые нужно записать для кнопки cmdTop:
Procedure cmdprev.click
select заказ
IF NOT BOF()
SKIP-1
IF BOF()
GO TOP
ENDIF
ENDIF
*THISFORM.REFRESH()
*THISFORM.PARENT.BUTTON.REFRESH
_SCREEN.ACTIVEFORM.REFRESH()
Коды, которые нужно записать для кнопки cmdTop:
Procedure cmdend.click
select заказ
IF NOT EOF()
GO BOTTOM
ENDIF
*THISFORM.REFRESH()
*THISFORM.PARENT.BUTTO.REFRESH()
_SCREEN.ACTIVEFORM.REFRESH()
Коды, которые нужно записать для кнопки cmdTop:
Procedure cmdexit.click
THISFORM.RELEASE
Коды, которые нужно записать для кнопки cmdTop:
Procedure cmdadd.click
select заказ
append blank
thisform.refresh()
Коды, которые нужно записать для кнопки cmdTop:
Procedure cmdadd2.click
select заказ_блюда
append blank
replace кодзаказа with заказ.кодзаказа
thisform.refresh()
Коды, которые нужно записать для кнопки cmdTop:
Procedure cmdras.click
* browse
SELECT СКЛАД
set order to tag ингридиент
*browse
*clea
* ? recno(),КОЛИЧЕСТВО
LOCATE FOR СКЛАД.ИНГРИДИЕНТ==queryблюда.ингридиент
*? склад.ингридиент
if .not.eof()
*? recno()
REPLACE КОЛИЧЕСТВО WITH количество-queryблюда.вес/1000*queryблюда.порции
*? количество
endif
select queryблюда
*CONTINUE
endscan
Коды, которые нужно записать для кнопки cmdTop:
Procedure cmdsena.click SELECT DISTINCT Cтоимость.блюдо,;
sum(Cтоимость.sum_exp_2* Заказ_блюда.порции)as summa, Cтоимость.sum_exp_2,;
Заказ_блюда.порции;
FROM "ресторан!заказ блюда" Заказ_блюда,;
cтоимость INNER JOIN "ресторан!заказ блюда" Заказ_блюда ;
ON Cтоимость.блюдо == Заказ_блюда.блюдо;
WHERE Cтоимость.блюдо == Заказ_блюда.блюдо AND Заказ_блюда.кодзаказа = THISFORM.SPINNER1.VALUE;
GROUP BY Cтоимость.блюдо
THISFORM.TXTSUM.VALUE=summa
select заказ
go 1
Задания Спроектировать формы для ввода элементов справочников и ввода оперативной информации для своего индивидуального варианта.
Порядок отчета практической работы При отчете практической работы необходимо:
Продемонстрировать выполненные задания по индивидуальному варианту, прокомментировать порядок его выполнения и объяснить полученные результаты
Ответить на контрольные вопросы.
Контрольные вопросы Что такое форма?
Какие виды форм Вы знаете?
Какие способы создания форм существуют в Visual FoxPro/
|