А.С.Грошев.Базы данных.Уч.пособие
.pdf5.Высокая скорость разработки приложений с использованием мастеров (Wizard), конструкторов (Designer), построителей (Builder), режим подсказок IntelliSense при написании текста программ, системы отладки и тестирования программ.
6.Возможность разработки клиентских приложений, работающих по технологии клиент – сервер с данными, размещенными на серверах баз данных
Oracle и Microsoft SQL Server и с другими приложениями Microsoft Windows с использованием ODBC и OLE.
7.Возможность разработки Интернет-приложений для работы с базами данных.
8.Возможность разработки проекта для работы с базами данных с компиля-
цией его в программу, исполняемую в VFP (*.app), в операционной систе-
ме Microsoft Windows (*.exe или *.dll) или в Интернет-браузере (*.app).
Система VFP предназначена для использования профессиональными программистами, поэтому нет смысла в русификации ее меню и языка – для любого программиста английский синтаксис алгоритмического языка более привычен, чем русский.
41
2.2. Типы файлов, которые использует система
Особенность системы – использование значительного количества файлов с различными расширениями для работы с различными типами объектов, но по сути формат многих из них dbf с мемо полями. В таблице 2.2 приведен список основных типов файлов.
Таблица 2.2. Список расширений и типов файлов, используемых системой
|
Расширение |
|
Тип файла |
|
.app |
|
Сгенерированное приложение |
|
.cdx |
|
Компаундный индекс |
|
.dbc |
|
База данных (Database) |
|
.dbf |
|
Таблица (Table) |
|
.dct |
|
Мемо-поля базы данных |
|
.dcx |
|
Индекс базы данных |
|
.exe |
|
Исполняемая программа |
|
.fll |
|
Динамическая библиотекаVisual FoxPro |
|
.fpt |
|
Мемо поля таблицы базы данных |
|
|
||
|
.frt |
|
Мемо поля отчета |
|
.frx |
|
Отчет (Report) |
|
.fxp |
|
Скомпилированный программный файл |
|
.h |
|
Файл заголовков |
|
.ico |
|
Иконка |
|
.idx |
|
Одиночный индекс |
|
.lbt |
|
Мемо поля этикетки |
|
.lbx |
|
Этикетка (Label) |
|
.mnt |
|
Мемо поля меню |
|
.mnx |
|
Меню |
|
.mpr |
|
Сгенерированная программа меню |
|
.mpx |
|
Скомпилированная программа меню |
|
.ocx |
|
Библиотека объектов ActiveX |
|
.pjt |
|
Мемо поля проекта |
|
.pjx |
|
Проект |
|
.prg |
|
Файл программы |
|
.qpr |
|
Программа-запрос |
|
.qpx |
|
Скомпилированный запрос |
|
.sct |
|
Мемо поля формы |
|
.scx |
|
Форма (Form) |
|
.vct |
|
Мемо поля библиотеки Visual FoxPro |
|
.vcx |
|
Библиотека Visual FoxPro |
|
|
42 |
сле чего открывается окно описания структуры таблицы базы данных (Table Designer) (рис. 2.5).
В окне Table Designer описываем все по-
ля таблицы Spisok.dbf –
имя поля (Name), тип
(Type), ширину (Width),
количество десятичных знаков для действительных чисел (Decimal), наличие простого индекса (Index) и задаем заголовок поля таблицы (Caption). Имена полей лучше писать латинскими буквами.
Для индекса NZ на страни-
це Indexes окна Table Designer следует задать тип индекса – Primary – первичный, т.к. номер зачетки
– уникальный для каждого студента, однозначно его идентифицирует и поэтому может служить первичным ключом (в таблице обозна-
чения A – Ascending – ин-
декс в порядке возрастания, P – Primary – первичный).
Структура главной таблицы базы данных приведена в табл. 2.3.
Для таблицы, входящей в состав базы данных, в окне Table Designer
присутствуют разделы Display, Map field…, Field validation, Field comment,
эта информация сохраняется в файле базы данных и поэтому отсутствует при описании структуры свободных таблиц (файлы *.dbf, не входящие в состав базы данных). Таблицу можно удалить из базу, но оставить в виде свободной таблице на диске, в этом случае информация этих разделов теряется.
Задание заголовков (Caption) для полей при описании структуры таблицы облегчает разработку экранных форм и отчетов – эти названия появятся как подписи для полей (если Caption отсутствует, подписью будет имя поля).
44
Таблица 2.3. Структура таблицы Spisok.dbf
Name |
Type |
Width |
Decimal |
Index |
Caption |
Nz |
С |
7 |
|
A, P |
Номер зачетки |
|
|
|
|
|
|
Fio |
С |
45 |
|
|
Фамилия, имя, отчество |
|
|
|
|
|
|
data_p |
D |
8 |
|
|
Дата поступления |
|
|
|
|
|
|
n_fclt |
N |
2 |
|
A |
Факультет |
|
|
|
|
|
|
n_spect |
C |
7 |
|
A |
Специальность |
|
|
|
|
|
|
kurs |
N |
1 |
|
|
Курс |
|
|
|
|
|
|
n_grup |
C |
10 |
|
|
Группа |
|
|
|
|
|
|
n_pasp |
C |
10 |
|
|
Номер паспорта |
|
|
|
|
|
|
Далее создаем следующую таблицу в базе – справочник факультетов с именем файла Fclt.dbf. Для этого следует снова поместить курсор мыши на пустое место окна Database Designer, щелкнуть правой кнопкой мыши и в контекстном меню выбрать команду New table. В окне Table Designer описываем структуру таблицы (табл.2.4).
Таблица 2.4. Структура таблицы Fclt.dbf
Name |
Type |
Width |
Decimal |
Index |
Caption |
n_fclt |
N |
2 |
|
A, P |
Номер факультета |
|
|
|
|
|
|
name_f |
С |
120 |
|
|
Название факультета |
|
|
|
|
|
|
Название ключевого поля справочника, его тип и ширину желательно оставить такими же, как и в главной таблице, для облегчения установления связей при разработке экранных форм и отчетов с помощью мастеров.
Точно так же создаем в базе данных следующие таблицы и индексы для следующих таблиц (табл.2.5, 2.6, 2.7)
Таблица 2.5. Структура таблицы Spect.dbf
Name |
|
Type |
Width |
|
Decimal |
|
Index |
|
|
Caption |
||||
n_spect |
|
C |
7 |
|
|
|
|
A, P |
|
Код специальности |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
name_s |
|
С |
120 |
|
|
|
|
|
|
|
Название специальности |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 2.6. Структура таблицы Ocenki.dbf |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
||||
Name |
|
Type |
|
|
Width |
|
Decimal |
|
Index |
Caption |
||||
nz |
|
C |
|
7 |
|
|
|
|
|
A, P |
|
Номер зачетки |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
semestr |
|
N |
|
1 |
|
|
|
|
|
|
|
|
Семестр |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
n_predm |
|
N |
|
2 |
|
|
|
|
|
A |
|
Предмет |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ball |
|
C |
|
1 |
|
|
|
|
|
|
|
|
Оценка |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data_b |
|
D |
|
8 |
|
|
|
|
|
|
|
|
Дата |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
prepod |
|
С |
|
45 |
|
|
|
|
|
|
|
|
Преподаватель |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
|
|
|
Таблица 2.7. Структура таблицы Predmets.dbf
Name |
Type |
Width |
Decimal |
Index |
Caption |
n_predm |
N |
2 |
|
A, P |
Номер предмета |
|
|
|
|
|
|
name_p |
С |
120 |
|
|
Название предмета |
|
|
|
|
|
|
Далее в окне Database Designer задаем постоянные связи между таблицами в базе, перетаскивая мышкой название первичного индекса к обычному (Regular) индексу. В результате получаем схему базы данных (рис. 2.6).
Рис. 2.6. Окно базы данных STUDENTS
Задание № 2.1
Для выданного задания создать базу данных, описать структуру таблиц, создать индексы, установить постоянные связи между таблицами в базе.
46
2.3. Использование стандартных режимов BROWSE и EDIT для работы с таблицами базы
Всистеме VFP существует два основных режима работы с таблицами (и соответственно, команды языка этой системы):
Browse – табличный формат и
Edit – форма с построчным расположением полей.
Существует много разных способов открыть окно таблицы базы данных для редактирования в одном из этих режимов, в том числе:
1.в открытом окне модификации структуры базы (Database Designer) щелкнуть правой кнопкой мыши на таблице и выбрать команду Browse;
2.щелкнуть мышкой на значке Open стандартной панели инструментов, задать тип файла Table, выбрать нужную таблицу и дать команду Browse в окне Command или в пункте меню View;
3.открыть окно Data session (из пункта главного меню Window), в нем открыть нужные таблицы (кнопка Open), затем выбрать нужную Вам открытую таблицу и нажать на кнопку Browse.
Врезультате будет открыто окно таблицы базы данных (рис. 2.7.), изменится пункт главного меню View (Вид) – в нем появятся пункты Browse и Edit для переключения режимов, кроме того пункт Append mode – режим автоматического добавления записей в таблицу (возможен только при работе с таблицами из системы VFP, в программном режиме для добавления записей служат команды APPEND… и INSERT… – см. приложение 1).
Выбрав режимы Browse и Append mode (в меню у этих пунктов появится галочка ), мы сможем занести некоторые данные в таблицы нашей базы.
поле n_fclt |
поле name_f |
поме- |
запись |
тить |
|
для |
|
уда- |
|
ления |
|
разделить на 2 части
Рис. 2.7. Стандартный режим Browse работы с таблицей
47
Окно Browse имеет очень много возможностей, которые используются при программировании (см. полный синтаксис команды Browse в приложении). В диалоговом режиме VFP по умолчанию выполняется команда Browse Last – открыть окно в той конфигурации, в которой оно было открыто в предыдущий раз. Если Вы при модификации структуры таблицы добавили в нее новое поле, оно может не появиться на экране, в этом случае нужно написать в окне Command команду Browse или Browse normal.
Окно Browse можно разделить на 2 части, одна из них может быть в режиме Browse, другая – Edit, что удобно при работе с таблицами, имеющими большое количество полей. Можно изменять расположение и ширину полей. Назначение узкой белой колонки слева от полей таблицы – пометить запись для удаления. Помеченная запись может быть видна с черной отметкой в этой колонке (set delete off) или не видна и как бы отсутствует (set delete on). Помеченные для удаления записи можно удалить из файла таблицы (командой Pack), но эта операция связана с переписыванием информации из одного файла в другой, может выполняться только в эксклюзивном режиме открытия таблицы, поэтому выполняется нечасто и обычно не простым пользователем, а администратором базы или программистом.
Режим Edit для той же таблицы показан на рис. 2.8.
В таблице 4-я запись помечена для удаления. Отметку легко снять, повторно щелкнув по черной полоске слева от записи.
Рис. 2.8. Стандартный режим «Edit»
Задание № 2.2
1.Открыть таблицу spisok.dbf в режиме Browse, переключиться в режим Edit и обратно. Занести 10 – 20 записей в каждую из таблиц базы (сначала заполнить справочные таблицы). Научиться удалять записи и восстанавливать удаленные записи.
2.Изучить пункт меню Table, появляющийся в меню VFP для активного окна таблицы (особенно пункты меню Go to record – Locate…, Append Records… и Replace Field…).
3.Занести копию записи в базу с помощью команд Scatter Memvar, Append Blank, Gather memvar, написанных в окне Command.
48
2.4. Разработка экранных форм для работы с базой данных
Для баз данных, состоящих из нескольких таблиц, наглядная и удобная работа может быть организована при использовании экранных форм. В этом случае можно организовать выбор из таблиц-справочников с использованием раскрывающихся списков или отдельных окон, специальные режимы редактирования данных с сохранением или отменой изменений, режимы поиска и отбора информации, печати необходимых отчетов на принтере и пр.
При работе с экранными формами существует два принципиально разных подхода:
1.стиль, принятый в системе FoxPro – на главной экранной форме представлена информация одной записи главной таблицы и связанные с ней данные; полный список записей можно увидеть, нажав кнопку Поиск на этой форме, либо на другой странице той же формы;
2.стиль, принятый в старых системах типа Clipper – главный экран содержит список записей, из него можно перейти на другой экран для редакти-
рования одной записи.
Как показывает практика работы, первый стиль позволяет быстрее перейти к редактированию необходимых данных (за счет имеющихся кнопок и горячих клавиш перехода к следующей и предыдущей записи, создания новой записи, поиска информации).
Имеющиеся в системе VFP мастера разработки экранных форм создают их с использованием первого стиля. Созданные мастером простейшие формы далее, как правило, приходится дополнять и модифицировать для реализации всех необходимых условий работы с базой. Мастера системы VFP используют библиотеки объектов, в которых реализованы механизмы сетевой работы с любыми базами данных в разных режимах буферизации или без нее. Поэтому модификацию существующих программных модулей библиотечных объектов следует выполнять при необходимости крайне осторожно, разобравшись в стандартном программном коде.
При работе с базой данных наиболее удобно использовать режим буферизации данных на уровне многих записей – в этом случае все изменения, выполненные в различных таблицах (редактирование существующих данных, добавление и удаление записей) могут быть сохранены после нажатия на соответствующую кнопку на экране или панели инструментов, либо все изменения могут быть отменены.
Мастер экранных форм (Form Wizard) позволяет разрабатывать экранные формы, имеющие некоторый стандартный набор кнопок управления. В этом случае данные становятся доступны для редактирования только после
49