Для баз данных, состоящих из большого количества таблиц, наглядная и удобная работа может быть организована при использовании
На
На рис. 5.1 - 5.5 приведены в качестве примера
(рис 5.1) Множество записей в одной экранной форме, редактирование - в отдельном окне (см. рис. 5.4)
(рис 5.2) Множество записей в одной экранной форме с кнопками, но без меню и панели инструментов, с редактированием данных в таблице
(рис 5.3) Одна запись родительской таблицы и множество записей дочерней
(рис 5.4) Одна запись на многостраничной экранной форме с кнопками без меню и панели инструментов
(рис 5.5) Экранная форма с командными кнопками
При работе с экранными формами существует два принципиально разных подхода:
В несложной системе, основой которой может быть одна
В системе
При работе с базой данных наиболее удобно использовать режим буферизации данных на уровне многих записей - в этом случае все изменения, выполненные в различных таблицах (редактирование существующих данных, добавление и удаление записей) могут быть сохранены после нажатия на соответствующую кнопку на экране или панели инструментов, либо все изменения могут быть отменены.
Мастер экранных форм ( Form Wizard ) позволяет разрабатывать экранные формы, имеющие некоторый стандартный набор кнопок управления. В этом случае данные становятся доступны для редактирования только после нажатия на кнопку Правка, а по завершении редактирования надо нажать на кнопку Сохранить или Отменить.
При использовании Мастера проектов ( Application Wizard ) можно разрабатывать экранные формы, входящие в состав проекта, и оформленные в новом стиле - все данные на экране изначально доступны для редактирования, пользователь может в любой момент принять решение, сохранять изменения или нет. Для управления используется не набор кнопок, а панели инструментов. Система следит за изменениями: если Вы попытаетесь закончить работать с базой, не дав команды о сохранении или отмене изменений, появится соответствующий запрос (как в программах Word или в Excel при закрытии окна).
Воспользуемся способом разработки экранных форм с использованием Form Wizard. Предварительно откроем базу данных Students в эксклюзивном режиме (в окне Open должна стоять галочка у слова Exclusive ). Далее нажимаем на кнопку New на стандартной панели инструментов системы
Работа Мастера заключается в пошаговом формировании ответов на определенные вопросы с генерацией для полученного таким образом описания экранной формы или другого объекта при использовании других Мастеров.
Шаг 1 (Step 1, рис. 5.6): выбор главной таблицы и ее полей. Экран содержит краткое описание этого шага и следующие списки: выбора базы данных и таблиц (Databases and tables), доступных полей выбранной таблицы (Available fields) и выбранных для размещения на экранной форме полей главной таблицы (Selected fields).
(рис 5.6) Шаг 1 Мастера разработки экранных форм
Для выбора необходимых полей служат кнопки со стрелками или может использоваться двойной щелчок мыши.
Далее нажимаем на кнопку Next > и переходим ко второму шагу, где нам необходимо выбрать на аналогичном экране таблицу, связанную с главной связью от одной записи - ко многим, и ее поля, в нашем случае это все поля таблицы Ocenki.
На третьем шаге нужно подтвердить, что выбранные таблицы действительно связаны по значению поля NZ.
Четвертый шаг - выбор стиля формы и типа кнопок (рис. 5.7). Использование кнопок с картинками (Picture buttons) имеет то преимущество, что изображение носит интернациональный характер, после усвоения назначения кнопок быстрее воспринимается, чем текст. Другой вариант в международных многоязыковых системах - сохранять все названия кнопок в отдельных файлах или в базе данных, т.е. с названиями кнопок связывать значения переменных, которые определяются при запуске системы в работу.
(рис 5.7) Шаг 4 Мастера разработки форм
Шаг 5 - задание сортировки записей главной таблицы. Можно задать сортировку по имеющемуся у таблицы индексу или указать последовательность полей для создания сложного индекса (не более трех), например, поля N_fclt, N_grup, Fio (рис. 5.8).
(рис 5.8) Шаг 5 Мастера разработки форм
На шестом, последнем шаге задаем заголовок ( Titul ) для формы и выбираем завершающую операцию - Save form and modify it in Form Designer - Сохранить форму и модифицировать ее в дизайнере форм.
После нажатия на кнопку Finish выбираем папку для сохранения файлов экранной формы и ее название - можно оставить предлагаемое системой название, совпадающее с названием главной таблицы (у файлов таблицы и формы будут разные расширения).
В результате будет сгенерирована и открыта в дизайнере форма следующего вида (рис. 5.9):
(рис 5.9) Экранная форма, разработанная Мастером
На экранной форме (объект базового класса Form) присутствуют объекты следующих классов (см. рис. 5.9):
Grid - сложный объект, состоящий из столбцов, которые имеют заголовок ( Header ) и, обычно, редактируемые данные в виде объекта
Container - контейнер-объект, который служит для объединения других объектов в одну группу, для которой можно задать общие свойства и события;
Command Button - командная кнопка, связанная с выполнением определенной процедуры, находится внутри контейнера.
Следует отметить, что многие из этих объектов имеют базовый класс (свойство BaseClass ), соответствующий приведенному названию (из библиотеки классов Standard ), а реально происходят из Wizembss.vcx - библиотеки классов, которую использует Мастер разработки экранных форм. Эта библиотека основана на стандартных объектах, но они модифицированы (добавлены и описаны новые свойства и события), что необходимо для работы Мастера.
Для создания объектов экранных форм используется панель инструментов Form Controls, для выравнивания объектов полезна панель Layout (см. рис. 5.10).
(рис 5.10) Панели инструментов для работы с объектами экранной формы
Полный список стандартных объектов экранных форм, присутствующих на панели
| Наименование | Кнопка | Главное свойство | Пример использования |
|---|---|---|---|
| Label |
|
Caption |
|
|
Control Source |
|
|
|
Control Source |
|
|
|
Click Event |
|
|
| Option Group |
|
Control Source |
|
|
Control Source |
|
|
|
ControlSource,RowSourceTip,RowSource |
|
|
|
ControlSource,RowSourceTip,RowSource |
|
|
|
Control Source |
|
|
| Grid |
|
см. рис. 5.9 | |
| Image Picture |
|
Picture |
|
| Timer |
|
Timer Event, Interval | невидимый объект |
| Page Frame |
|
Многостраничная форма | |
| ActiveX (OLE) Container |
|
Ole Class | Объект ActiveX |
| ActiveX (OLE) Bound |
|
Control Source | Объект поля General |
| Line |
|
|
|
| Shape |
|
Curvature |
|
| Сontainer |
|
Группа объектов | |
| Hyperlink |
|
Используется с объектами библиотек _hyperlink.vcx и _internet.vcx | Невидимый объект |
Свойства формы и всех ее объектов можно просматривать и изменять в окне Properties (рис. 5.11). Если это окно отсутствует, его можно открыть, щелкнув правой кнопкой мыши на любом объекте и выбрав в контекстном меню слово Properties.
(рис 5.11) Окно свойств объекта
В верхней части окна присутствует раскрывающийся
Data - данные, важнейшее свойство в этом разделе - Control Source для объектов, связанных с редактированием каких-либо данных;
Metods - методы, т.е. процедуры (программные модули), выполняющиеся для объекта, чаще всего, при наступлении определенных событий (Events). Примеры событий: Load Event - происходит перед созданием объекта (но после открытия таблиц, если это задано в Data Environment для формы); Activate Event - при активизации объекта; When Event - перед тем, как курсор переместится на текущий объект, выбранный мышкой, или при переходе на него с предыдущего объекта с использованием клавиш TAB или Enter ; Valid Event - перед тем, как курсор переместится c текущего на другой объект; Click Event - при щелчке мышкой на объекте и пр.;
Layout - все, что связано с внешним видом объекта: расположение, размеры, шрифт, цвет, тип выравнивания, ShowTips - показывать или нет всплывающие подсказки, ScrollBars - показывать или нет полосы скроллинга и пр.;
Other - прочие свойства;
Favorites - избранное, раздел, куда можно помещать список самых важных свойств объекта (в версии VFP 9.0 ).
Следует отметить важность события Valid Event для всех объектов, связанных с редактированием данных, - оно не только позволяет выполнить проверку правильности ввода данных, но, что особенно ценно, позволяет автоматизировать выполнение расчетов после редактирования данных и выхода из поля редактирования.
Для использования экранной формы нужно запустить ее в работу, что можно сделать из системы FoxPro несколькими способами: нажатием на кнопку на стандартной панели инструментов, горячими клавишами Ctrl+E, командой Run Form в пункте меню Form (этот пункт присутствует в меню только при активном окне Form Designer ) или командой Do Form Spisok, написанной в окне Command (при этом папка, в которой расположены файлы экранной формы Spisok.scx и Spisok.sct должна быть Default Directory или в команде нужно указать полный путь и название файла). После чего начинает работать программа, отображающая на экране тот вид, что описан вами с использованием Конструктора форм, дающая возможность редактировать данные в полях формы и выполнять процедуры, связанные с объектами этой формы (рис. 5.12).
(рис 5.12) Экранная форма, запущенная в работу с базой данных
Как мы видим, на форме отсутствуют названия факультетов, специальностей и предметов. В объекте Grid Мастер не показал имеющиеся в таблице Ocenki заголовки полей таблицы ( Caption ). Следует устранить эти недостатки и создать возможность выбора факультетов, специальностей и предметов из соответствующих справочников.
При работе с базами данных всегда используются таблицы-справочники. На экранных формах для выбора данных из справочников можно использовать раскрывающиеся списки (в
Для использования информации из справочных таблиц необходимо добавить их в Data Environment - окно, связанное с экранной формой и описывающее, какие таблицы связаны с формой, как они открываются и закрываются при запуске формы в работу (см. свойства в окне Properties ). Другой вариант - в событии Load экранной формы самому написать команды открытия таблиц, задания порядка по индексам и установления связей.
Для начинающих программистов проще воспользоваться первым, визуальным способом. Окно Data Environment можно открыть, щелкнув на соответствующем названии в пункте главного меню View или выбрав команду Data Environment в контекстном меню экранной формы. Вид этого окна показан на рис. 5.13. Щелкнув правой кнопкой мыши на пустом месте окна Data Environment, выберем команду Add в контекстном меню, добавим таблицы Fclt, Spect, Predmеts и зададим правильно связи между ними перетаскиванием мышкой названия поля к названию индекса, как показано на рисунке.
(рис 5.13) Окно данных экранной формы Data Environment
Теперь можно добавить на экранную форму раскрывающиеся списки для показа информации из справочников факультетов, специальностей и предметов и занесения соответствующих номеров из справочников в список студентов или в таблицу оценок.
Найдем на панели Form Controls объект Combo Box, щелкнем на нем мышкой и покажем область размещения и размер этого объекта на экранной форме Spisok. Затем щелкаем правой кнопкой мыши на нем и в контекстном меню выбираем пункт Builder. В результате в
(рис 5.14) Страница 1 построителя объекта
Наиболее важны первая и четвертая страницы Builder. На первой странице выбираем таблицу базы - FCLT и поля - сначала Name_f, затем N_fclt.
На второй странице заменим стиль drop-down combo на drop-down list. Разница между стилями: первый позволяет писать информацию в поле ввода; она станет значением ControlSource, если соответствует одной из строк данных в списке выбора; второй позволяет только открыть список и выбрать из него данные.
На третьей можно задать ширину полей.
На четвертой странице (рис. 5.15.) нужно задать:
(рис 5.15) Страница 4 Построителя объекта
Нажмем на кнопку OK и посмотрим в окне Properties на странице Data свойство BoundTo. Значение этого свойства следует задать равным True, тогда в поле Spisok.N_fclt будет заноситься номер из справочника, иначе заносился бы порядковый номер строки в списке.
Кроме того, следует изменить свойство UserControlMode группы кнопок экранной формы на значение .T. - в этом случае список будет доступен для редактирования только после нажатия на кнопку Редактировать.
Аналогичным образом добавим объект Combo Box для работы со справочником специальностей.
Более сложная операция - замена в колонке Grid объекта
Для показа названия предмета в таблице добавим количество колонок (для объекта Grid свойство ColumnCount изменим на 7), переместим колонку перетаскиванием мышкой за заголовок на четвертое место в таблице после колонки N_predm и опишем свойства колонки 7: ControlSource - Predmets.name_p (выбором из списка доступных полей); ReadOnly - .T. (делаем эту колонку нередактируемой).
Далее отредактируем заголовки ( Header ) у всех колонок объекте Grid, цвет фона экранной формы и объекта Grid (BackColor) и цвета объектов
В результате
(рис 5.16) Экранная форма после модификации в Конструкторе
Следующая задача - научиться пользоваться той экранной формой, основу которой предложил Мастер и которая содержит некоторый набор кнопок для работы с информацией базы данных. Для последующей работы с отчетами с группировкой данных нам необходимо, используя ее правила заполнения, занести в базу данных информацию о студентах не менее 2 факультетов, на каждом факультете должно быть 2-3 группы, в каждой группе несколько студентов, у каждого студента - 3-5 оценок.
Назначение кнопок, на которых вместо надписей мы задали показ картинок (см. рис. 5.7.), поясняется подсказками у курсора мыши ( ToolTipText ) и на строке состояния ( StatusBarText ), однако эти сообщения в библиотечном объекте написаны на английском языке. Если использовать в дальнейшем библиотеки из папки
| № | Назначение | ToolTipText | StatusBarText |
|---|---|---|---|
| 1. | Перейти к первой записи | Top record | Go to top of table |
| 2. | Перейти к предыдущей записи | Previous record | Skip to previous record |
| 3. | Перейти к следующей записи | Next record | Skip to next record |
| 4. | Перейти к последней записи | Bottom record | Go to bottom of table |
| 5. | Поиск записей | Find records | Search for records |
| 6. | Напечатать отчет | Print report | Print to report |
| 7. | Добавить/сохранить запись | Add/Save record | Add new record/Save edits |
| 8. | Редактировать/отменить изменения | Edit/ |
Edit existing record/ |
| 9. | Удалить запись | Delete record | Delete existing record |
| 10. | Выйти из формы | Exit form | Exit input form |
Как видно из табл. 5.2., кнопки 7 и 8 имеют двойное назначение, которое изменяется после нажатия на кнопку. Текст процедур, связанных с методом ClickEvent для кнопок, находится в классе txtbtns библиотеки wizbtns.vcx, где его можно изучить. Если для кнопки 7 возникнет необходимость использовать нестандартную команду добавления данных, нужно скопировать процедуру библиотечного объекта в метод ClickEvent своей кнопки и отредактировать фрагмент программы (в фигурных скобках - комментарии к программе):
IF THIS.Parent.EditMode {если нажата кнопка и мы в режиме редактирования}
THIS.Parent.UpdateRows() {сохранить запись, процедура группы кнопок - родительского объекта}
ELSE
IF !THIS.Parent.AddRec() {иначе - к процедуре добавления записей}
RETURN
ENDIF
ENDIF
THIS.Parent.EditMode = !THIS.Parent.EditMode {изменение свойства EditMode }
THIS.Parent.AddMode = THIS.Parent.EditMode {изменение свойства AddMode }
THIS.Parent.TopFile = .F.
THIS.Parent.ButtonRefresh() {обновление параметров кнопок 5 -10 }
THIS.Parent.NavRefresh() {обновление параметров кнопок 1-4 и объектов формы}
Наиболее сложные функции - у кнопок 7 в режиме добавления данных, кнопок 5 и 6. Эти кнопки вызывают запуск в работу библиотечных
(рис 5.17) Экранная форма GridAddForm библиотеки wizbtns.vcx
(рис 5.18) Экранная форма SearchForm библиотеки wizbtns.vcx(добавлен объект Grid1 для показа таблицы, в которой выполняется поиск)
(рис 5.19) Экранная форма вывода отчета библиотеки _report.vcx
Порядок ввода новых данных с использованием разработанной формы следующий:
При работе с числовой информацией в базе данных часто необходимо выполнить какие-либо расчеты после ввода данных. Это можно выполнять автоматически, как отмечалось ранее, описав процедуру расчета в методе ValidEvent поля ввода данных, или использовать процедуру, связанную с новой командной кнопкой на экранной форме.
Дополним экранную форму новой кнопкой для выполнения небольшого расчетного примера.
На рис. 5.20. приведен текст процедуры метода ClickEvent новой кнопки для расчета и показа средней оценки студента.
(рис 5.20) Процедура метода ClickEvent кнопки расчета средней оценки
Написание текста программ облегчается системой IntelliSense, которая позволяет делать выбор из всплывающих списков выбора продолжения команд или показывает подсказки по синтаксису команд, как показано на рис. 5.20..
Результат выполнения процедуры расчета показан на рис. 5.21..
(рис 5.21) Результат работы кнопки "Расчет средней оценки"
Более сложные расчеты выполняются обычно с использованием запросов для отбора информации из базы, о которых будет рассказано в следующей лекции.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.