FoxPro8

         

Реляционные базы данных


Перемены, происходящие в нашей стране в последнее время, не могли не затронуть областей информатики и вычислительной техники. Еще десять лет назад работа с базами данных была уделом профессиональных программистов. Сами системы не были предназначены для простого пользователя. Основным потребителем таких систем был военно-промышленный комплекс. С появлением банков, акционерных обществ, частных компаний базы данных нашли более широкое применение. Люди понимают, что информация — это деньги. Ее потеря или несвоевременное получение могут дорого стоить. Именно этим можно объяснить столь бурный рост информационных технологий и стремительное развитие систем управления базами данных (СУБД).

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

В 1970 году статья научного сотрудника компании IBM доктора Е. Ф. Кодда о реляционной модели данных произвела революцию в подходе к хранению и обработке информации. На основе этой модели в семидесятые годы были разработаны первые реляционные базы данных, а в настоящее время они рассматриваются как стандарт для современных коммерческих СУБД.

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

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


Номер заказа

Код услуги

Номер телефона

Дата разговора

Код города

Продолжительность разговора

Стоимость

Примечание

Записи о междугородних разговорах записываются в книгу регистрации в табличном виде в хронологическом порядке (рис. 1.1). Каждая строка имеет одинаковую структуру и состоит из восьми полей. В рассматриваемом Примере ЭТО ПОЛЯ: Номер заказа, Код услуги, Номер телефона, Дата разговора, Код города, Продолжительность разговора, Стоимость.



Рис. 1.1. Книга регистрации междугородних разговоров

Замечание

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

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



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


Главное окно Visual FoxPro


Нa рис. 2.2 показано главное окно Visual FoxPro, каким оно выглядит после апуска программы.

В нем можно выделить семь основных объектов: заголовок окна, строка меню, панель инструментов, строка состояния, рабочая область, командное окно Command (Команда) и диалоговое окно Task Pane Manager (Менеджер панели задач).

Заголовок находится в верхней части главного окна и содержит три объекта: копию значка программы Visual FoxPro, заголовок главного окна и значки управления этим окном.

Строка меню содержит иерархическое меню Visual FoxPro. Список пунктов меню зависит от типа активного окна.

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

В нижней части главного окна расположена строка состояния, в которую выводится информация о текущем состоянии активного окна, краткое описание выбранной кнопки панели инструментов или пункта меню. Вид отображаемой в строке состояния информации зависит от типа активного окна. Например, в окне конструктора форм в строке состояния выводится наименование активного объекта формы, а при просмотре таблицы в режиме Browse (Просмотр) в левой части строки состояния отображается наименование открытой таблицы, в середине строки состояния — номер текущей записи и индикатор режима работы.

В Visual FoxPro 8.0 в главном окне по умолчанию отображается Task Pane Manager (Менеджер панели задач). Он содержит список проектов и баз данных, открывавшихся в последнее время, команды запуска справочной системы и мастеров по созданию базы данных и проекта, примеры, которые можно использовать в разработке, полезные ссылки на сайты в Интернете.

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



Краткий обзор меню Visual FoxPro


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

При отсутствии в главном окне Visual FoxPro других открытых окон, строка меню содержит пункты File (Файл), Edit (Правка), View (Вид), Tools (Инструменты), Program (Программа), Window (Окно) и Help (Справка). При открытии окон в меню добавляются команды, применимые только к объектам данного окна. Например, при работе с таблицами в главное меню добавляется пункт меню Table (Таблица), при открытии на экране формы в меню появляется пункт Form (Форма).

Совет

При выборе команды в строке состояния появляется ее краткое описание.

Выполнение команд меню

Выполнение команд меню в Visual FoxPro осуществляется стандартными для Windows действиями. Вы можете использовать как мышь, так и клавиатуру. Перечислим возможные способы.

При использовании мыши установите курсор на пункт меню, содержащий выбираемую команду, и нажмите кнопку мыши. Если команда содержит подменю, выберите в нем требуемую команду.

При использовании клавиатуры сначала активизируйте строку меню нажатием клавиши <F10> или <AIt>. Затем установите указатель на требуемую , команду с помощью клавиш <<->? <->>? и нажмите <Enter>.

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

Для наиболее часто выполняемых команд вы можете запомнить связанные с ними "горячие" клавиши, которые состоят из комбинации символа <Alt> и подчеркнутого символа в имени команды. При использовании "горячих" клавиш не требуется нажимать клавишу <Enter>.

Отказ от выполнения команды меню


Если строка меню активизирована, но вы решили не выполнять команды Меню, воспользуйтесь одним из следующих способов:

нажмите клавишу <F10>;

щелкните мышью в любом свободном месте основного окна Visual FoxPro.

Если вы находитесь в подменю, для возврата в меню предыдущего уровня Ж .нажмите клавишу <Esc>.

Команды меню File

Меню File (Файл) содержит команды, связанные с доступом к файлам. Эти команды позволяют создавать новые файлы разных типов, открывать существующие файлы, закрывать, сохранять и печатать их.

Команда Save As HTML (Сохранить файл в формате HTML) открывает соответствующее диалоговое окно, позволяющее сохранить текущую форму, Меню, отчет или таблицу в формате HTML (HyperText Markup Language).

Очень удобна команда Revert (Возвратить), позволяющая отменить все изменения файла, сделанные в текущем сеансе редактирования.

В нижней части меню располагаются имена последних четырех открывавшихся проектов, которые предоставляют возможность быстрого открытия любого из них. Последней командой этого меню является команда Exit (Выход). Она аналогична действию команды quit в командном окне и предназначена для выхода из Visual FoxPro.

Команды меню Edit

Меню Edit (Правка) имеется во многих приложениях Windows. В Visual FoxPro команды этого меню используются при создании форм и отчетов, редактировании программ.

Команды Paste Special (Специальная вставка). Insert Object (Вставить объект). Object (Объект) и Links (Связи) применимы только к полям типа General и OLE-объектам. Остальные команды применяются при редактировании как программ, так и полей таблиц.

Незнакомой для вас по другим приложениям Windows может оказаться команда Go to Line (Переход на строку), предназначенная в Visual FoxPro для работы с программами. С помощью данной команды можно переходить к строке с указанным номером в тексте программы.

При вводе имени объекта, свойства, команды или функции после ввода активирующего символа (как правило, точка, пробел или открывающая скобка) команда List Members (Список значений) Visual FoxPro активизирует список допустимых значений (свойств, методов, событий и объектов) для указанного в редакторе объекта. Команда Quick Info (Быстрая информация) отображает допустимый вариант записи данной команды, функции, переменной.



Последняя в меню — команда Properties (Свойства), при выборе которой открывается диалоговое окно Edit Properties (Редактирование свойств), позволяющее задавать параметры сохранения программных файлов, просматривать их свойства, дату последнего редактирования и занимаемый объем на диске.

Команды меню View

Этот пункт меню содержит команды, управляющие просмотром текущего открытого файла. Если вы не просматриваете файл, то меню содержит всего одну команду Toolbars (Панели инструментов). Эта команда открывает диалоговое окно, в котором перечислены панели инструментов, используемые при работе в Visual FoxPro.

При работе в конструкторах меню View (Вид) содержит команды, управляющие отображением используемых в данном режиме работы панелей инструментов. Так, например, при работе в конструкторе форм в меню появляются команды для выбора следующих панелей: Color Palette (Цветовая палитра), Layout (Расположение) и Form Controls (Элементы управления формы).

При просмотре таблиц или редактировании форм, меню или отчетов в меню появляются дополнительные команды. Например, если вы работаете с таблицами, в меню появляется несколько новых команд. Команды Edit (Редактирование) и Browse (Обзор) переводят таблицу в режим просмотра и редактирования содержащихся в ней записей. Отличие между этими двумя командами состоит в стиле отображения содержимого таблицы.

Команды меню Format

Этот пункт меню доступен при работе в конструкторе форм, отчетов, программ, текстовых файлов и этикеток. Меню Format (Формат) содержит команды, управляющие характеристиками шрифта, выравниванием текста и объектов, определением интервалов между объектами. Однако при работе с различными конструкторами становятся доступными и дополнительные команды.

Команды меню Tools

Это меню содержит мастера и средства отладки программ.

Первой в меню Tools (Сервис) располагается команда Wizards (Мастера), открывающая список мастеров Visual FoxPro. Мастер — это программа, которая помогает пользователю в решении таких задач, как создание форм, отчетов, таблиц. Процесс создания при этом заключается в ответах на вопросы мастера относительно создаваемого объекта.



Далее в меню расположена команда Macros (Макрос), предназначенная для создания макросов.

Команда Debugger (Отладчик) предназначена для отладки программ. Она закрывает диалоговое окно Visual FoxPro Debugger, в котором вы можете просмотреть значения переменных, элементов массива, полей, возвращаемые функциями Visual FoxPro значения и т. д.

Команда Component Gallery (Галерея компонентов) открывает окно Catalogs — Component Gallery (Каталоги — Галерея компонентов) для работы в Галерее компонентов Visual FoxPro. Команда Coverage Profiler (Анализ выполнения) позволяет просмотреть информацию о выполненной программе.

Команда Object Browser (Браузер объектов) открывает одноименное окно, позволяющее просматривать классы, свойства, методы, события и константы выбранных библиотек.

Команда IntelliSense Manager (Менеджер IntelliSense) открывает окно настройки параметров, управляющих анализом синтаксиса вводимых в окне редактора программных конструкций.

Команда Task List (Список заданий) позволяет запомнить место, в которое вы можете вернуться впоследствии нажатием оперативной клавиши. Кроме того, данная команда позволяет вводить список необходимых задач, аналогично Microsoft Outlook.

Команда Document View (Просмотр документа) открывает диалоговое окно, в котором отображается список процедур, функций, #DEFINE операторов для открытой в окне редактора программы. При выборе элемента списка осуществляется переход на этот элемент в окне редактора.

Команды Task Pane (Панель задач) и Toolbox (Инструментарий) открывают, соответственно, диалоговые окна Task Pane Manager (Менеджер панели задач) и ToolBox (Инструментарий). Окно ToolBox (Инструментарий) отображает элементы, которые использовались при создании приложений.

Последняя команда в меню Tools (Инструменты) — Options (Параметры). С ее помощью можно настраивать конфигурацию Visual FoxPro.

Команды меню Program

Меню Program (Программа) содержит команды, связанные с выполнением и компиляцией программ.

Команды меню Window

В меню Window (Окно) имеются команды, которые управляют открытыми на экране окнами. С помощью этих команд можно упорядочивать, скрывать, очищать окна и переходить из одного окна в другое. Кроме того, команды данного меню позволяют активизировать любое открытое окно.



Команда Command Window ( Командное окно) из меню Window активизирует командное окно Command, позволяющее использовать команды при работе с Visual FoxPro.

Команда Properties Window (Окно свойств) открывает диалоговое окно Properties (Свойства), позволяющее просмотреть и изменить свойства объектов, расположенных в форме курсоров и отношений.

Для открытия окна Data Session (Окно данных), которое содержит список всех открытых в данном сеансе таблиц и отношений между ними (рис. 2.6), используется команда Data Session (Окно данных).



Рис. 2.6. Окно Data Session показывает рабочие области с открытыми таблицами и отношениями между ними

В центре окна Data Session (Окно данных) находятся кнопки управления таблицами. Кнопка Properties (Свойства) открывает окно, позволяющее просмотреть и изменить текущие свойства таблицы. Для открытия таблицы в новой рабочей области используется кнопка Open (Открыть). Кнопка Browse (Табличный режим) открывает таблицу для просмотра содержащихся в ней записей. Кнопка Close (Закрыть) окна Data Session (Окно данных) закрывает таблицу в текущей рабочей области, а кнопка Relations (Отношения) позволяет определить отношения между открытыми таблицами.

Команды меню Help

Help (Справка) — последняя команда меню главного окна. Таблица 2.5 содержит список команд, доступных в этом меню.

Таблица 2.5. Назначение команд меню Help

Команда меню Назначение
Microsoft Visual FoxPro Help

(Справочная система Visual FoxPro).
Открывает окно справочной системы Visual FoxPro 8.0
MSDN Search (Поиск в MSDN) Поиск справочной информации в MSDN1
Technical Support (Техническая поддержка) Отображает информацию о технической поддержке, оказываемой Microsoft
Visual FoxPro on the Web (Visual FoxPro на Web-страницах) Открывает Web-страницу Microsoft Visual FoxPro. Для использования этой команды необходим доступ в Интернет
About Microsoft Visual FoxPro

(0 программе Microsoft Visual FoxPro)
Открывает диалоговое окно About Microsoft Visual FoxPro, в котором содержится информация об авторских правах на программу, номер версии программы и ее идентификатор, имя файла ресурсов и используемый по умолчанию каталог. В этом окне можно также посмотреть разнообразную информацию о компьютере, ресурсах системы

Системное меню и системные кнопки


Заголовок главного окна содержит уменьшенную копию значка программы, текст "Microsoft Visual FoxPro" и кнопки управления размерами главного окна. При щелчке на значке пиктограммы открывается системное меню, содержащее команды перемещения и изменения размеров главного окна. В табл. 2.1 приведены команды, доступные из системного меню.

Таблица 2.1. Назначение команд системного меню

Команда Назначение
Восстановить Восстанавливает предыдущий размер окна после минимизации или максимизации
Переместить Активизирует главное окно Visual FoxPro и позволяет перемещать его с помощью клавиш перемещения курсора
Размер Активизирует главное окно Visual FoxPro и позволяет изменять его размеры с помощью клавиш перемещения курсора
Свернуть Свертывает главное окно FoxPro до размера кнопки и помещает ее на панель задач Windows
Развернуть Развертывает главное окно Visual FoxPro во весь экран
Закрыть Закрывает главное окно программы Visual FoxPro

Совет

Для быстрого закрытия программы Visual FoxPro дважды щелкните на уменьшенной копии значка программы в заголовке главного окна. Для того чтобы быстро восстановить/развернуть главное окно, дважды щелкните по панели заголовка.

Текст Microsoft Visual FoxPro заголовка главного окна, в случае необходимости, можно легко изменить, присвоив главному окну Visual FoxPro любое другое название или удалив название вообще. Для этого введите в командном окне следующую команду:

MODIFY WINDOW SCREEN TITLE "Новый заголовок главного окна"

ИЛИ

_SCREEN.caption = "Новый заголовок главного окна"

В правой стороне заголовка расположены кнопки управления окном. Их назначение описано в табл. 2.2.

Таблица 2.2. Назначение кнопок управления окном

Кнопка Название Назначение
Свернуть Сворачивает главное окно FoxPro до размера кнопки и помещает ее на панель задач Windows
Восстановить Уменьшает размер развернутого окна, позволяя в дальнейшем изменять его
Развернуть Развертывает главное окно Visual FoxPro во весь экран
Закрыть Закрывает главное окно Visual FoxPro, тем самым прекращая работу программы



Запуск Visual FoxPro


Вы приступаете к работе с Visual FoxPro 8.0. Многое из того, с чем вам придется работать (меню, панели инструментов, диалоговые окна), покажутся знакомыми, т. к. они характерны для среды Windows.

Для запуска программы из главного меню Windows выполните следующие действия:

Нажмите кнопку Пуск, расположенную в нижней части экрана.

Рис. 2.1. Запуск Microsoft Visual FoxPro 8.0 из главного меню Windows

В открывшемся главном меню Windows выберите команду Программы. Появится меню данной команды.

Выберите в меню команду Microsoft Visual FoxPro 8.0 (рис. 2.1). На экране откроется главное окно Visual FoxPro 8.0 (рис. 2.2).

Для более быстрого запуска программы Visual FoxPro 8.0 вы можете создать на рабочем столе ярлык и назначить ему клавиши быстрого вызова. Тогда вам достаточно нажать заданную комбинацию клавиш, в каком бы окне Windows вы ни находились, и программа запустится. Кроме того, для удобства запуска приложения можно использовать панель Быстрый запуск системы Windows (рис. 2.1), поместив на нее значок программы Visual FoxPro.

Рис. 2.2. Главное окно Visual FoxPro 8.0



Знакомство со стандартной панелью инструментов Visual FoxPro


В Visual FoxPro имеется большое количество панелей инструментов, используемых при создании форм, отчетов и запросов. Мы их подробно рассмотрим в соответствующих главах. Сейчас вы познакомитесь со стандартной панелью инструментов (рис. 2.3), которая используется во всех режимах работы.

Рис. 2.3. Стандартная панель инструментов Visual FoxPro

Назначение кнопок стандартной панели инструментов описано в табл. 2.3.

Таблица 2.3. Назначение кнопок стандартной панели инструментов

Кнопка Название Назначение
New (Новый) Создает новый файл
Open (Открыть) Открывает существующий файл
Save (Сохранить) Сохраняет открытый файл
Print One Copy

(Печатать одну копию)

Печатает содержимое активного окна
Print Preview

(Просмотр печати)

Открывает окно предварительного просмотра печатаемого документа
Cut (Вырезать) Удаляет выделенный текст или выделенные объекты и помещает их в буфер
Сору (Копировать) Копирует в буфер выделенный текст или выделенные объекты, не удаляя их
Paste (Вставить) Вставляет содержимое буфера. Действие этой кнопки зависит от того, в каком из режимов вы работаете
Undo (Отменить) Отменяет выполненные действия
Redo (Восстановить) Восстанавливает отмененные действия
Run (Выполнить) Запускает на выполнение
Modify Form (Модифицировать форму) Позволяет модифицировать SCX-файл, связанный с данной формой
Databases (Базы данных) Содержит список открытых баз данных
Command Window

(Командное окно)

Открывает командное окно
Data Session Window

(Окно сеанса данных)

Открывает окно Data Session
Properties Window

(Окно свойств)

Открывает окно Properties, используемое для настройки свойств
Document View Window (Окно просмотра документа) Открывает окно Document View, в котором отображается список процедур, функций открытой в окне редактора программы
Class Browser (Обзор классов) Открывает окно Class Browser, предназначенное для работы с классами
Object Browser (Обзор объектов) Открывает окно Object Browser, позволяющее просматривать классы, свойства, методы, события и константы выбранных библиотек
Task Pane (Панель задач) Открывает окно Task Pane Manager (Менеджер панели задач)
Toolbox (Инструментарий) Открывает окно Toolbox, содержащее элементы, которые использовались разработчиком при создании приложения
<
Замечание

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

По умолчанию в главном окне программы Visual FoxPro всегда присутствует стандартная панель инструментов, если только вы не удалили ее с экрана. Если для работы вам необходима панель инструментов, а она не отображается на экране, выполните следующие действия:

Выберите в меню View (Вид) команду Toolbars (Панели инструментов). Откроется диалоговое окно Toolbars (рис. 2.4), в котором расположен список всех панелей инструментов программы Visual FoxPro.

Установите флажки слева от наименований тех панелей, которые вы хотите разместить в главном окне.

Нажмите кнопку ОК.

Используя флажки, расположенные в нижней части диалогового окна Toolbars, вы можете изменить вид кнопок панелей инструментов. Назначение этих флажков описано в табл. 2.4.



Рис. 2.4. Диалоговое окно Toolbars



Рис. 2.5. Панель инструментов можно расположить в любом месте главного окна

Таблица 2.4. Назначение флажков диалогового окна Toolbar

Установка флажка Назначение
Color buttons (Цветные кнопки) Кнопки на панели инструментов становятся цветными
Large buttons (Большие кнопки) Увеличивается размер кнопок
ToolTips (Подсказка) Выводится краткое описание кнопки при установке курсора на нее
После установки Visual FoxPro стандартная панель инструментов размещается в верхней части главного окна, но она, как и все остальные панели инструментов, может перемещаться в любое место экрана. Для этого установите курсор мыши в любое свободное от кнопок место на панели инструментов, нажмите кнопку мыши и, не отпуская ее, переместите панель на новое место. Если вы поместите панель инструментов не по краю главного окна Visual FoxPro, то сможете изменять ее размер (рис. 2.5).


Формирование списка баз данных и таблиц, используемых в проекте


Вкладка Data (Данные) (рис. 3.12) диалогового окна Application Builder (Построитель приложения) позволяет сформировать список баз данных и таблиц, включаемых в проект. В список, представленный на вкладке в табличном виде, можно добавлять как новые, так и уже существующие базы данных и таблицы (табл. 3.8).

Рис. 3.12. Вкладка Data диалогового окна Application Builder

Таблица 3.8. Назначение столбцов вкладки Data диалогового окна Application Builder

Столбец Назначение
Datasource (Источник данных) Имя таблицы
Form (Форма) Содержит флажок, установка которого указывает на необходимость автоматического создания формы для данной таблицы
Report (Отчет) Содержит флажок, установка которого указывает на необходимость автоматического создания отчета для данной таблицы

Для добавления в проект таблиц, их удаления и других действий над ними на вкладке расположены следующие кнопки (табл. 3.9).

Таблица 3.9. Назначение кнопок вкладки Data диалогового окна Application Builder

Кнопка Назначение
Запускает мастера баз данных, который создает для проекта новую базу данных
Запускает мастера таблиц для создания новой таблицы
Select (Выбрать) Открывает диалоговое окно для выбора уже существующей базы данных или таблицы
Clear (Очистить) Очищает диалоговое окно от таблиц, которые были добавлены в проект
Generate (Построить) При нажатии кнопки происходит добавление в проект всех размещенных на вкладке таблиц, осуществляется создание форм и отчетов для тех таблиц, в которых установлены соответствующие флажки. После всех выполненных действий список таблиц очищается

Для форм, создаваемых мастером проекта, можно задать стиль оформления, используя раскрывающийся список Form Style (Стиль формы), находящийся непосредственно под таблицей. На рис. 3.13 представлена форма, созданная с использованием стиля Embossed (Рельефный).

При создании отчета, как и при создании форм, можно применять различные стили. Для задания стиля отчета используется раскрывающийся список Report Style (Стиль отчета).

Рис. 3.13. Форма, созданная с использованием стиля Embossed



Формирование списка форм проекта


Вкладка Forms (Формы) (рис. 3.14) предназначена для создания списка форм проекта.

Рис. 3.14. Вкладка Forms диалогового окна Application Builder

Если для входящих в проект таблиц вы установили в столбце Form (Форма) вкладки Data (Данные) соответствующие флажки и нажали кнопку Generate (Построить), то мастер создаст формы, причем их названия будут отображаться в списке форм на вкладке Forms (Формы). Вы можете добавить в этот список формы, созданные ранее, используя для этого диалоговое окно Open (Открыть), появляющееся при нажатии кнопки Add (Добавить).

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

Поле ввода Name (Имя) содержит название формы. Устанавливая следующие флажки, можно задать такие свойства формы (табл. 3.10).

Таблица 3.10. Назначение флажков вкладки Forms диалогового окна Application Builder

Флажок Назначение
Single instance (Один экземпляр) Пользователь сможет открыть форму в приложении не больше одного раза
Use Navigation toolbar (Использовать панель навигации) При открытии формы на экране появляется панель инструментов, позволяющая перемещаться по записям
Use Navigation menu (Использовать меню навигации) Во время выполнения формы в строку меню добавляется пункт Go, содержащий команды для управления работой формы
Appear in File New dialog (Показывать в диалоговом окне команды New из меню File) Имя формы добавляется в список, вызываемый при выборе команды New из меню File проекта
Appear in File Open dialog

(Показывать в диалоговом окне команды Open из меню File)

Имя формы добавляется в список, вызываемый при выборе команды Open из меню File

Для того чтобы добавить, изменить или удалить форму из проекта, на вкладке размещены специальные кнопки (табл. 3.11).

Таблица 3.11. Назначение кнопок вкладки Forms диалогового окна Application Builder

Кнопка Назначение
Add (Добавить) Открывает диалоговое окно Open (Открыть), позволяющее добавить в проект существующую форму
Edit (Правка) Открывает форму в конструкторе форм для ее модификации
Remove (Удалить) Удаляет из проекта форму, выбранную в списке



Формирование списка отчетов


Вкладка Reports (Отчеты) (рис. 3.15) диалогового окна Application BuiMer (Построитель приложения) позволяет сформировать список отчетов проекта.

Рис. 3.15. Вкладка Reports диалогового окна Application Builder

Если для входящих в проект таблиц на вкладке Data (Данные) в столбце Report (Отчет) вы установили флажки и нажали кнопку Generate (Построить), мастер создаст отчеты, а их названия поместит на вкладку Reports (Отчеты). Вы можете добавить в этот список отчеты, созданные ранее, используя для этого диалоговое окно Open (Открыть), появляющееся при нажатии кнопки Add (Добавить).

Поле Name (Имя) содержит имя выбранного в списке отчета. Флажок Appear in Print Reports dialog (Добавить в диалоговое окно печати отчетов) указывает, нужно ли отображать имя отчета в диалоговом окне Print Reports (Печать отчетов).

На вкладке расположены кнопки, имеющие следующее назначение (табл. 3.12).

Таблица 3.12. Назначение кнопок вкладки Reports диалогового окна Application Builder

Кнопка Назначение
Add (Добавить) Открывает диалоговое окно Open (Открыть) для добавления в проект существующего отчета
Edit (Правка) Запускает конструктор отчетов и открывает в нем для модификации текущий отчет
Remove (Удалить) Удаляет из проекта выбранный в списке отчет



Использование мастера при создании проекта


В Visual FoxPro 8.0 при создании проекта с помощью мастера вы можете включить в него таблицы, формы, отчеты, которые на разных шагах создания вам предлагает мастер, а также добавить в проект элементы, созданные ранее.

Чтобы создать новый проект с помощью мастера, выполните следующие действия:

В меню File (Файл) выберите команду New (Новый) или нажмите кнопку New (Новый) на панели инструментов.

Откроется диалоговое окно New (Новый), в котором выберите опцию Project (Проект) и нажмите кнопку Wizard (Мастер).

Совет

В Microsoft Visual FoxPro 8.0 вы также можете запустить мастера для создания проекта из окна Task Pane Manager (Менеджер панели задач). Для этого в окне менеджера задач воспользуйтесь ссылкой Create a new application (Создание нового приложения). Откроется диалоговое окно, представленное на рис. 3.9.

Рис. 3.9. Задание имени проекта и его расположения

Откроется диалоговое окно, представленное на рис. 3.9. В поле ввода Project name (Имя проекта) этого окна необходимо задать имя создаваемого проекта, а в поле ввода Project file (Файл проекта) указать его расположение. Чтобы разместить проект в требуемой папке, нужно воспользоваться кнопкой Browse (Обзор), которая открывает диалоговое окно, позволяющее найти на компьютере необходимую папку.

После определения имени файла и его расположения нажмите кнопку ОК для создания нового проекта. Мастер переходит к созданию нового проекта, и на экране появляется диалоговое окно построителя приложения Application Builder (Построитель приложения) (рис. 3.10).

Нижняя часть диалогового окна содержит следующие кнопки:

Help — открывает файл справки;

Cancel — отменяет работу мастера;

ОК — создает новый проект.

Рис. 3.10. Диалоговое окно построителя приложения

Кроме того, диалоговое окно содержит шесть вкладок, на которых определяется следующая информация (табл. 3.4).

Таблица 3.4. Вкладки диалогового окна Application Builder

Вкладка Информация
General (Общие) Основные параметры создаваемого проекта
Credits (Об авторе) Информация об авторах проекта
Data (Данные) Параметры создания баз данных и таблиц
Forms (Формы) Информация о формах, входящих в проект
Reports (Отчеты) Информация об отчетах, входящих в проект
Advanced (Дополнительные) Параметры создания справочной системы, меню проекта



Настройка дополнительных параметров проекта


Вкладка Advanced (Дополнительные) (рис. 3.16) позволяет задать дополнительные параметры настройки проекта.

Рис. 3.16. Вкладка Advanced диалогового окна Application Builder

Поле Help file (Файл справки) используется для указания имени и расположения файла справки приложения. Имя файла можно ввести вручную или выбрать из списка, воспользовавшись кнопкой, расположенной справа от поля ввода.

В поле ввода Default data directory (Каталог данных по умолчанию) отображается название папки, в которой будут размещены базы данных и таблицы.

В области Menus (Меню) расположены флажки, управляющие отображением панели инструментов и строки меню (табл. 3.13).

Таблица 3.13. Назначение флажков вкладки Advanced диалогового окна Application Builder

Флажок Назначение
Standard toolbar (Стандартная панель) Флажок управляет отображением в приложении стандартной панели инструментов
Favorites menu (Меню Избранное) При установленном флажке в строку меню добавляется пункт Favorites (Избранные), содержащий список наиболее часто используемых форм и отчетов приложения

С помощью кнопки Cleanup (Привести в соответствие) вы можете очистить таблицу проекта от записей, содержащих ссылки на удаленные элементы проекта.



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


При создании приложения используется проект, который объединяет элементы приложения Visual FoxPro и группирует их по типам. Информация о проекте хранится в специальной таблице, которая, в отличие от обычных таблиц Visual FoxPro, имеет расширение PJX. Memo-поля таблицы содержат наименование элемента проекта, его описание и другие текстовые атрибуты Файл с Memo-полями таблицы имеет расширение PJT. Использование проекта упрощает разработку приложения, так как в проекте базы данных программы, формы, отчеты, запросы и другие элементы приложения располагаются в соответствующих разделах, а также запоминается расположение каждого включенного в проект элемента.

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

Приступая к разработке нового приложения, прежде всего, создайте проект приложения. В дальнейшем вы будете добавлять в него созданные вам элементы приложения. Для создания нового проекта вы можете использовать мастер Application Wizard (Мастер приложения) или команду New (Hовый) из меню File (Файл).

При выполнении команды New (Новый) на экране открывается соответствующее диалоговое окно с перечислением всех типов элементов приложения, которые возможны в Visual FoxPro (рис. 3.1). По умолчанию установлена опция Project (Проект).

Рис. 3.1. Диалоговое окно New, в котором можно указать тип создаваемого файла

Рис. 3.2. Диалоговое окно Create для задания имени создаваемого проекта

Для создания нового проекта выполните следующие действия:

Нажмите кнопку New file (Новый файл).

В поле ввода Enter project file (Введите имя проекта) диалогового окна Create (Создать) задайте имя создаваемого проекта, убедившись, что в поле Тип файла установлен тип сохраняемого файла Project (Проем), а в поле Папка правильно выбрана папка, в которой вы хотите расположить свой проект (рис. 3.2).


Для сохранения созданного проекта нажмите кнопку Сохранить. Visual FoxPro создаст файлы проекта и запишет их в указанное место. После этого откроется окно проекта Project Manager (Менеджер проема) (рис. 3.3).



Рис. 3.3. Окно проекта Project Manager

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

Таблица 3.1. Вкладки окна Project Manager

Вкладка Отображаемые файлы
All (Все) Все файлы
Data (Данные) Базы данных, таблицы, запросы, представления данных, хранимые процедуры
Documents (Документы) Формы, отчеты и этикетки
Classes (Классы) Классы
Code (Коды) Программы и библиотеки
Other (Остальные) Меню, файлы переменных памяти, клавишные макрокоманды
В Visual FoxPro используется иерархическое отображение элементов проекта. На самом верхнем уровне находятся категории элементов проекта: Data (Данные), Documents (Документы), Class Libraries (Библиотеки классов), Code (Исходный код) и Other (Другие).

Замечание

Для каждой категории элементов в окне проекта имеется отдельная вкладка.

На следующем уровне находятся типы файлов данной категории. Например, для категории Documents (Документы) имеются следующие типы файлов:

Forms — формы;

Reports — отчеты;

Labels — этикетки.

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

Каждый иерархический список может находиться в свернутом или развернутом состоянии. Если элемент иерархического списка содержит элементы следующего уровня, то в свернутом состоянии с левой стороны наименования элемента отображается знак плюс. На рис. 3.3 видно, что все элементы списка, кроме Class Libraries (Библиотеки классов), содержат вложенные уровни элементов. Для раскрытия списка элементов следующего уровня необходимо щелкнуть мышью на знаке плюс. При раскрытии списка знак плюс изменяется на знак минус. На рис. 3.4 приведен пример иерархического списка Data (Данные), имеющего глубину в четыре уровня. Для свертывания вложенного списка элементов необходимо щелкнуть мышью на знаке минус.



В окне проекта имеется одна очень интересная и полезная кнопка. Расположена она в правом верхнем углу окна проекта и содержит направленнуювверх стрелку. При нажатии на эту кнопку окно проекта сворачивается, остаются видимыми только наименования вкладок, а значок кнопки меняется на стрелку, направленную вниз. Тем самым на экране освобождается места для других окон (рис. 3.5). При этом вкладки проекта остаются активными, и при нажатии на них открывается часть окна проекта, содержащая информацию выбранной вкладки (рис. 3.6). Для возврата окна проекта в развернутый вид нажмите кнопку, содержащую стрелку, направленную вниз.

Visual FoxPro предоставляет возможность перемещать открытую вкладку по экрану. Для этого щелкните на ярлыке и, не отпуская кнопки мыши, переместите вкладку в любое место главного окна Visual FoxPro (рис. 3.7).

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

Поместите курсор в нижний правый угол.

Когда курсор примет вид двунаправленной стрелки, нажмите левую кнопку мыши и, удерживая ее в нажатом состоянии, перемещайте в ту или иную сторону.

После задания нужного размера области отпустите кнопку мыши.



Рис. 3.4. Иерархический список элементов проекта



Рис. 3.5. Свернутое окно проекта



Рис. 3.6. Одна вкладка проекта раскрыта



Рис. 3.7. Перемещение открытых вкладок по экрану


Управление элементами проекта


Для управления элементами проекта используются кнопки, расположенные в правой части окна проекта. Часть кнопок можно применять при работе с файлами всех типов, а часть — только с определенными. В табл. 3.3 приведен список кнопок, которые вы можете использовать для всех типов файлов проекта.

Таблица 3.3. Назначение кнопок меню Project

Кнопка Назначение
New (Новый) Создает новый файл, который автоматически добавляется в проект
Add (Добавить) Добавляет созданный ранее файл в проект
Modify (Модифицировать) Модифицирует выбранный файл проекта
Remove (Удалить) Удаляет файл из проекта

Для выполняемых файлов (формы, запросы, программы и меню) может использоваться кнопка Run (Выполнить), которая запускает выбранный файл проекта на выполнение. Для отчетов и этикеток можно использовать кнопку Preview (Просмотр), которая открывает файл в окне предварительного просмотра. Для таблиц вы можете выбрать кнопку Browse (Обзор), чтобы просмотреть данные, содержащиеся в таблице.

Кнопка Build (Построить) окна проекта открывает диалоговое окно Build Options (Опции построения), позволяющее создать проект, исполняемое приложение, динамическую библиотеку или обновить существующий проект.



Управление проектом с помощью меню


При открытии окна проекта в основное меню Visual FoxPro добавляется новый пункт меню Project (Проект), который содержит команды, позволяющие работать с файлами, входящими в проект. Назначение этих команд описано в табл. 3.2.

Таблица 3.2. Назначение команд меню Project

Команда Назначение
New File (Новый файл) Создает новый файл, который автоматически добавляется в проект
Add File (Добавить файл) Добавляет созданные ранее файлы в проект
Modify File (Модифицировать файл) Модифицирует выбранный файл проекта
Browse File(Просмотр файла в табличном виде) Открывает таблицу в режиме Browse
Preview File (Просмотр файла) Открывает файл (например, отчет) в окне предварительного просмотра
Run File (Выполнить файл) Запускает файл на выполнение
Remove File (Удалить файл) Удаляет файл из проекта
Rename File (Переименовать файл) Переименовывает файл, входящий в проект
Exclude (Исключить) Исключает файл из проекта
Include (Включить) Включает файл в проект
Set Main (Основная программа) Устанавливает файл в качестве основной программы проекта
Edit Description (Правка описания) Открывает окно редактирования описания файла
Project Info (Информация проекта) Отображает информацию о проекте
Errors (Ошибки) Отображает ошибки, возникшие при построении проекта
Build (Построить) Строит приложение или перестраивает проект
Refresh (Обновить) Обновляет информацию в окне проекта
Clean Up Project (Упаковать) Упаковывает проект, убирая из него удаленные файлы

Для работы с файлами проекта можно использовать контекстное меню, раскрываемое при нажатии на нем правой кнопки мыши (рис. 3.8) и содержащее некоторые команды из меню Project (Проект), а также команду Expand All (Раскрыть все), раскрывающую все уровни вложенности данных в окне Project Manager (Менеджер проекта).

Рис. 3.8. Контекстное меню для выбранного файла проекта



Задание информации о разработчиках проекта


На вкладке Credits (Об авторе) (рис. 3.11) диалогового окна Application Builder (Построитель приложения) указывается следующая информация: список авторов, предприятие, номер версии, права и торговая марка приложения.

Рис. 3.11. Вкладка Credits диалогового окна Application Builder

Для ввода этих данных используются поля (табл. 3.7).

Таблица 3.7. Назначение полей вкладки Credits диалогового окна Application Builder

Поле ввода Назначение
Author (Автор)

Список разработчиков приложения
Company (Предприятие) Наименование предприятия
Version (Версия) Версия приложения
Copyright (Права) Права по использованию приложения
Trademark (Торговая марка) Торговая марка приложения



Задание общих параметров проекта


Вкладка General (Общие) (см. рис. 3.10) предназначена для задания таких параметров проекта, как его имя, размещаемый в проекте рисунок, тип создаваемого приложения, общие диалоговые окна, значок проекта.

Поле ввода Name (Имя) позволяет задать имя приложения, отображаемое в его заголовке, диалоговом окне О программе, а также внутри приложения.

В поле ввода Image (Рисунок) можно задать имя файла рисунка, который будет появляться в окне при запуске приложения и в диалоговом окне О программе.

Область Application Type (Тип приложения) позволяет задать тип создаваемого приложения (табл. 3.5).

Таблица 3.5. Опции области Application Type

Опция Тип приложения
Normal (Обычное) Созданное приложение будет запускаться в главном окне Visual FoxPro, заменяя все окружение и системное меню Visual FoxPro
Module (Автономное) Приложение добавляется в существующий проект или будет вызываться из другого приложения. Меню приложения добавляется в системное меню, и его функции используются как компоненты другого приложения
Top-Level (Верхний уровень) Приложение будет запускаться как отдельное приложение Microsoft Windows

Устанавливая флажки группы Common Dialogs (Общие диалоги), можно сформировать список общих диалоговых окон приложения с информацией о разработчиках, правами доступа к файлам приложения (табл. 3.6).

Таблица 3.6. Назначение флажков группы Common Dialogs

Флажок Назначение
Splash screen

(Всплывающий экран)

При запуске приложения появляется окно, содержащее логотип приложения и сведения об авторе
About dialog

(О программе)

Приложение содержит диалоговое окно О программе, в котором будет содержаться логотип приложения и сведения о разработчиках
Quick start

(Быстрый старт)

Проект содержит диалоговое окно Quick Start, в котором определяются права доступа к документам приложения и остальным файлам
User logins

(Окно ввода пароля)

При установленном флажке в проект добавляется форма, предназначенная для ввода пароля при запуске приложения

В области Icon (Значок) можно определить значок приложения.



Целостность данных


Целостность данных является одним из самых важных требований, предъявляемых к базам данных. Рассмотрим такой пример. База данных sales оптового магазина содержит таблицу customer со списком клиентов и таблицу ordsaiem, в которой размещены данные о клиентах и сделанных ими заказах. Если окажется, что в таблице ordsaiem содержатся коды клиентов, которые отсутствуют в таблице customer, то невозможно определить, кому был отпущен товар по этому заказу. Или еще такой пример. Вы удалили из таблицы клиентов, которые перестали пользоваться услугами вашего магазина, а потом обнаружили, что один из них не возвратил вам кредит. Но вся информация о нем в базе данных отсутствует.

Для определения условий целостности донных в базе данных проекта могут быть использованы установленные между таблицами отношения.

Проверка целостности данных может осуществляться как программными средствами, так и средствами базы данных. Например, при вводе в таблицу ordsaiem нового заказа можно использовать программу, которая будет проверять, имеется ли информация об этом клиенте в таблице customer. В случае отсутствия клиента, в таблицу customer будет добавляться новая запись.

Рис . 4.23. Диалоговое окно Referential Integrity Builder для определения условия целостности данных

Для определения условия целостности данных используется окно построителя условий целостности данных Referential Integrity Builder (Построитель целостности данных) (рис. 4.23), которое содержит перечень всех установленных отношений между таблицами. Для ею открытия выполните одно из следующих действий:

в окне конструктора базы данных установите курсор на линию, отображающую отношения таблиц, и выберите в контекстном меню команду Edit Referential Integrity (Редактирование целостности .чанных);

в меню Database (База данных) выберите команду Edit Referential Integrity (Редактирование целостности данных);

в диалоговом окне Edit Relationship (Редактирование отношений) нажмите кнопку Referential Integrity (Целостность данных).


Замечание

Если база данных содержит помеченные на удаление объекты, при открытии окна построителя условий целостности данных Referential Integrity Builder (Построитель целостности данных) Visual FoxPro попросит очистить базу данных. В этом случае в меню Database (База данных) выберите команду Clean Up Database (Очистка базы данных), после чего повторно выполните команду, открывающую окно построителя условий целостности данных.

Таблица описания условий содержит имена родительской и дочерней таблиц, наименования индексов, используемых для связи, а также типы действий, выполняемых при модификации данных: добавлении и удалении записей.

В центре диалогового окна находятся переключатели, предназначенные для указания типа выполняемого действия. В нижней части диалогового окна отображается краткая справка о возможном выборе действий. Кроме того, вы можете выбрать тип действия из раскрывающегося списка непосредственно в полях Update (Изменить), Delete (Удалить) и Insert (Вставить).

Рассмотрим возможные действия программы Visual FoxPro при изменении значения первичного ключа или ключа типа Candidate (Кандидат) в родительской таблице в зависимости от используемой опции (табл. 4.12).

Таблица 4.12. Описание действий Visual FoxPro, в зависимости от выбранной опции, при изменении значения первичного ключа или ключа типа Candidate

Наименование опции Описание
Cascade (Каскадное изменение)

При изменении значений полей первичного ключа или ключа-кандидата в родительской таблице автоматически осуществляется каскадное изменение всех соответствующих значений в дочерней таблице. Например, если это правило применить к отношению между таблицами Customer и Ordsalem, при изменении кода клиента в таблице Customer автоматически будут изменены коды и в таблице Ordsalem
Restrict (Запрет изменения) Не позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на изменяв мую запись. Данное правило также можно применить к отношению между таблицами Customer и Ordsalem, если в создаваемом приложении коды клиента определяются на этапе ввода нового клиента и в дальнейшем не редактируются
Ignore (Игнорировать)

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


При удалении записи из родительской таблицы возможны следующие действия программы Visual FoxPro в зависимости от установленной в диалоговом окне Referential Integrity Builder (Построителя целостности данных) опции (табл. 4.13).

Таблица 4.13. Действия Visual FoxPro, в зависимости от выбранной опции, при удалении записи из родительской таблицы

Наименование опции

Описание

Cascade (Каскад)

При удалении записи из родительской таблицы автоматически осуществляется каскадное удаление всех записей из дочерней таблицы, связанных с удаляемой записью
Restrict (Запрет)

Не позволяет удалять записи в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на удаляемую запись. При попытке удаления записи возникает ошибка, которую вы можете обработать программно
Ignore (Игнорировать) Позволяет удалять записи в родительской таблице независимо от существования связанных записей в дочерней таблице. Очевидно, что целостность данных при этом не поддерживается
Используя опции диалогового окна Referential Integrity Builder, можно задать действия, выполняемые Visual FoxPro при добавлении новой записи в дочернюю таблицу или редактировании в ней существующей (табл. 4.14).

Таблица 4.14. Действия Visual FoxPro, в зависимости от выбранной опции, при добавлении новой записи в родительскую таблицу

Наименование

Описание

Restrict (Запрет)

Не позволяет вводить запись, если значение индексного выражения дочерней таблицы не соответствует одной из записей в родительской таблице
Ignore (Игнорировать) При вводе данных в дочернюю таблицу не анализируется значение индексного выражения. Целостность данных при этом не поддерживается
После завершения определения в диалоговом окне Referential Integrity Builder (Построитель целостности данных) условий целостности данных вся введенная информация сохраняется в базе данных.

Определим условия целостности данных для таблиц customer и ordsaiem.

1. Откройте окно конструктора базы данных.



2. Создайте отношение между родительской таблицей customer и дочерней таблицей Ordsaiem.

3. Выделите линию, соединяющую таблицы.

4. Нажмите правую кнопку мыши и выберите команду контекстного меню Edit Referential Integrity (Редактировать целостность данных). На экране откроется диалоговое окно Referential Integrity Builder (Построитель целостности данных).



Рис . 4.24. Диалоговое окно Referential Integrity Builder

5. Предположим, что в процессе эксплуатации нашего приложения колы клиента могут изменяться, поэтому в поле Update (Изменить) установите тип действий Cascade (Каскадное изменение).

6. Для обеспечения целостности данных при удалении записей в таблице Customer в поле Delete (Удалить) установите тип действий Restrict (Запрет изменения).

7. На рис. 4.24 представлен результат описанных действий, которые необходимы для обеспечения целостности данных. Для сохранения выполненных действий нажмите кнопку ОК.


Добавление и удаление полей


Для добавления нового поля в таблицу выполните следующие действия:

С помощью клавиш-стрелок или мыши установите курсор на строку, перед которой вы хотите вставить пропущенное поле. При этом курсор может находиться в любом столбце (Name (Имя), Туре (Тип) или Width (Размер)).

Нажмите кнопку Insert (Вставить).

Visual FoxPro вставляет пустую строку с именем NewFld. Введите требуемое имя поля.

Используя значения списка Туре (Тип), задайте тип поля.

В столбце Width (Размер) введите размер нового поля.

Для удаления поля из структуры таблицы установите курсор на поле, которое требуется удалить, и нажмите кнопку Delete (Удалить) окна конструктора.



Имена таблиц


Таблицы, как и любые, другие объекты в Visual FoxPro, имеют имена. Как было сказано ранее, таблицы бывают свободные и входящие в базу данных.

Для таблиц, входящих в базу данных, вы можете задать два имени. Одно вводится в диалоговом окне Create (Создать), а второе — на вкладке Table (Таблица) окна конструктора таблицы. Имя, вводимое в диалоговом окне Create (Создать) при создании таблицы, является именем файла, в котором таблица сохраняется на диске. При задании этого имени необходимо придерживаться ограничений, накладываемых операционной системой на количество символов в имени файла. Второе имя таблицы является внутренним и хранится в базе данных. Внутреннее имя таблицы может содержать до 128 символов. Оно вводится в поле Name (Имя) вкладки Table (Таблица) окна конструктора таблицы.

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

Замечание

При работе в окне конструктора базы данных внутреннее имя таблицы отображается в заголовке окна таблицы. В том случае, если таблица не имеет внутреннего имени, вместо него отображается имя файла, в котором данная таблица сохранена.

Предупреждение

В наименовании таблицы недопустимо использование пробелов и специальных символов.



Индексы


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

Замечание

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

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

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

Для создания индекса таблицы используется вкладка Indexes (Индексы) (рис. 4.17) окна конструктора таблиц Table Designer (Конструктор таблицы).

Все индексы в Visual FoxPro имеют имена, задаваемые в поле Name (Имя).

Слева от имени индекса в столбце Order (Упорядочение) располагается переключатель, определяющий порядок упорядочения значений индексного выражения. По умолчанию при создании индекса в данном поле появляется стрелка, направленная вверх. Это означает, что значения индексного


выражения упорядочены по возрастанию. Если стрелка направлена вниз, это говорит о том, что значения упорядочены по убыванию. Для изменения способа упорядочения можно использовать клавишу <Spacebar> или щелчок мыши.



Рис. 4.17. Вкладка Indexes конструктора таблицы, предназначенная для создания индексов

Список Туре (Тип) используется для задания типа создаваемого индекса и содержит значения, описанные в табл. 4.11.

Таблица 4.11. Описание типов индекса

Тип индекса Описание
Regular (Обычный)

Создается индекс, в котором для каждой записи таблицы хранится значение индексного выражения. Если несколько записей имеют одинаковое значение индексного выражения, то каждое значение хранится отдельно и содержит ссылку на связанную с ней запись
Unique (Уникальный) Создается индекс, в котором хранятся только неповторяющиеся значения индексного выражения. Если две или более записей содержат одинаковое значение индексного выражения, то будет храниться только одно значение и ссылка на первую из записей с одинаковым значением индексного выражения. Таблица может иметь несколько уникальных индексов
Candidate (Кандидат)

Создается уникальный индекс, который не содержит полей с пустыми значениями. Этот индекс обладает всеми качествами первичного ключа и не является им только по той причине, что таблица не можег содержать более одного первичного ключа
Primary (Первичный) Создается уникальный индекс, который используется для связывания таблиц и определения условий целостности данных. Поля, входящие в первичный ключ, не должны допускать ввода пустых значений. В отличие от уникального индекса, таблица может иметь только один первичный ключ
Значение индекса или индексного выражения вводится в поле Expression (Выражение). Вы можете ввести индексное выражение непосредственно в поле ввода или для формирования выражения использовать диалоговое окно конструктора выражений Expression Builder (Построитель выражения), представленное на рис. 4.18. Для открытия данного окна нажмите кнопку, расположенную справа от поля Expression (Выражение).





Рис. 4.18. Диалоговое окно Expression Builder

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

cCountry + STR(icdCustomer)

В поле Filter (Фильтр) конструктора таблиц вы можете определить фильтр, используемый для ограничения формируемых индексных значений. В этом случае результат выражения должен иметь логический тип.

Замечание

Без индексов в Visual FoxPro не обойтись. Однако при их создании вы должны помнить, что если вы используете индекс, в состав которого входят поля большой ширины, индексный файл может оказаться очень больших размеров. Visual FoxPro не разрешает при создании индексов использовать Memo-поля и поля, содержащие графические изображения.


Изменение наименований полей и их типов


Ошибки, допущенные при задании имени поля или его типа, легко устраняются. Установите курсор на имя поля, которое хотите изменить, и, используя клавишу <Backspace> или <Del>, удалите ошибочные символы. После этого введите правильное имя поля.

Для изменения типа поля установите курсор в столбец Туре (Тип) и выберите из списка требуемое значение.

Предупреждение

Изменение типов полей таблицы, содержащей данные, может привести к потере информации.



Изменение порядка расположения полей


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

Установите курсор на поле, расположение которого хотите изменить. На кнопке появляется значок перемещения поля в виде двунаправленной стрелки

.

Установите курсор на значок перемещения.

Нажмите кнопку мыши и, удерживая ее нажатой, переместите значок вверх или вниз на требуемое место в структуре.

Отпустите кнопку мыши. Поле изменило свое местоположение



Модификация таблицы


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

Чтобы модифицировать таблицу, откройте ее в конструкторе таблиц. Для этого выполните одно из приведенных далее действий.

В окне проекта установите курсор на модифицируемую таблицу и нажмите кнопку Modify (Модифицировать) или выберите команду Modify File (Модифицировать файл) в меню Project (Проект).

В окне проекта установите курсор на модифицируемую таблицу, нажмите правую кнопку мыши и в появившемся на экране контекстном меню выберите команду Modify (Модифицировать).

При открытии конструктора таблицы из окна конструктора базы данных выделите модифицируемую таблицу и нажмите кнопку Modify Table (Модифицировать таблицу) на панели инструментов Database Designer (Конструктор базы данных) или выберите команду Modify (Модифицировать) в меню Database (База данных).

В результате на экране открывается диалоговое окно Table Designer (Конструктор таблицы), содержащее структуру модифицируемой таблицы.



Назначение кнопок окна конструктора таблицы


Ввод полей в окне конструктора таблицы осуществляется последовательно. После определения всех необходимых параметров первого поля вы переходите на новую строку и вводите информацию для следующего поля таблицы.

На вкладке Fields (Поля) внизу расположены четыре кнопки. Кнопка ОК предназначена для закрытия окна конструктора таблицы и сохранения всех изменений, внесенных в структуру таблицы.

Если вы изменили структуру таблицы, но хотите от этого отказаться, вам необходимо воспользоваться кнопкой Cancel (Отмена).

Для добавления в таблицу нового поля установите курсор на поле, выше которого вы предполагаете разместить новое, и нажмите кнопку Insert (Вставить). Будет добавлена пустая строка, в которую вы можете ввести информацию о новом поле.

Для удаления поля таблицы перейдите на строку с описанием данного поля и нажмите кнопку Delete (Удалить).

Кнопки Insert (Вставить) и Delete (Удалить) на вкладке Indexes (Индексы) позволяют добавлять в таблицу новые индексы и удалять существующие.



Окно конструктора таблиц


Конструктор таблиц предоставляет разработчику более широкие возможности при создании таблицы, чем мастер.

Рис. 4.11. Окно конструктора таблицы Table Designer

В конструктор таблиц вы можете перейти из мастера по созданию таблицы или непосредственно из диалогового окна New Table (Новая таблица) (см. рис. 4.4), нажав кнопку New Table (Новая таблица) и введя в диалоговом окне Create (Создать) имя создаваемой таблицы. В результате выполнения этих действий откроется окно конструктора таблицы Table Designer (Конструктор таблиц).

Окно конструктора таблиц Table Designer (Конструктор таблиц) (рис. 4.11) содержит три вкладки, предназначенные для определения следующих параметров:

Fields (Поля) — полей таблицы;

Indexes (Индексы) — индексов;

Table (Таблица) — условий достоверности вводимых данных, а также триггеров добавления, удаления и модификации.



Опция NULL


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

Более подробно определение свойств полей будет рассмотрено в главе 14.



Определение полей таблицы


При определении полей таблицы используется вкладка Fields (Поля), позволяющая ввести наименование поля, тип данных, размещаемых в поле, и ширину. При определении числовых полей необходимо также задать количество десятичных знаков.

Помимо основных параметров, в нижней части вкладки Fields (Поля) для каждого поля можно определить дополнительные параметры, которые будут определять условия ввода в него данных, а также краткое описание, которое поможет разработчику при модификации таблицы в процессе создания приложения или его сопровождения.



Определение свойств таблицы


Для определения свойств самой таблицы предназначена вкладка Table (Таблица) конструктора (рис. 4.12).

В ее верхней части расположено поле Name (Имя), в котором вы можете задать длинное имя таблицы. Это имя будет отображаться в окне проекта, а также использоваться при создании форм, запросов и отчетов.

При создании несвободной таблицы в строке Database (База данных) указывается имя базы данных, в которую будет входить создаваемая таблица. Это поле доступно только для чтения.

Используя поле Table Comment (Описание таблицы) вкладки Table (Таблица), вы можете ввести текстовое описание таблицы. Для определения условия проверки правильности ввода информации на уровне записей, гарантирующих достоверность вводимых в таблицу данных, и создания триггеров для добавления, изменения и удаления записей таблицы, предназначены поля областей Record validation (Достоверность записей) и Triggers (Триггеры).

Определение свойств таблицы будет рассмотрено в главе 14.

Рис. 4.12. Вкладка Table конструктора таблиц



Отношения между таблицами


Между таблицами существует четыре типа отношений. Это "один-к-одному", "один-ко-многпм", "много-к-одному", "много-ко-многим". Все эти типы отношений поддерживаются в Visual FoxPro.

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

Наиболее часто встречающимся является тип отношения "один-ко-многим". В качестве примеров могут быть рассмотрены отношения между покупателем и купленными им товарами, между предприятием и работающими на нем сотрудниками.

Отношение "много-к-одному" можно сравнить с отношением "один-ко-многим", рассматриваемое с другой точки зрения. Например, между клиентами и сделанными им заказами существует отношение "один-ко-многим". С другой стороны, если в качестве исходной точки рассматривать заказы, то между сделанными заказами и клиентами подучается отношение "много-к-одному".

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



Режимы просмотра таблицы


В Visual FoxPro существует два режима просмотра таблицы: Edit (Ввод) (рис. 4.15) и Browse (Обзор) (рис. 4.16).

Рис. 4.15. Просмотр таблицы в режиме Edit

В режиме Edit (Ввод) (рис. 4.15) поля таблицы располагаются в столбец друг под другом. Записи таблицы отделяются горизонтальными линиями.

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

В режиме Browse (Обзор) (рис. 4.16) таблица более наглядна. Поля расположены в один ряд. Одна строка соответствует одной записи таблицы, а записи размещены одна под другой. При вводе данных в таблицу, представленную в режиме Browse (Обзор), после ввода одной записи пользователю необходимо самому добавлять новую пустую запись, используя для этого команду Append New Record (Добавить новую запись) из меню Table (Таблица) или комбинацию клавиш <Ctrl>+<Y>.

Рис. 4.16. Просмотр таблицы в режиме Browse

Замечание

Для перехода в режимы просмотра таблицы Edit (Ввод) и Browse (Обзор) можно использовать одноименные команды из меню View (Вид).



Создание базы данных в окне проекта


База данных в Visual FoxPro — это совокупность таблиц, отношений между таблицами, индексов, триггеров и хранимых процедур.

Создание базы данных в Visual FoxPro осуществляется в интерактивном режиме с помощью конструктора базы данных, который позволяет:

создавать и модифицировать таблицы, хранимые процедуры, представления данных;

добавлять созданные ранее таблицы;

определять для таблиц индексы;

устанавливать отношения между таблицами, которые будут поддерживаться при создании форм и отчетов.

Описание структуры базы хранится в словаре базы данных, представляющем собой совокупность системных файлов.

База данных является частью проекта, поэтому ее целесообразно создавать в окне проекта. Для создания базы данных выполните следующие действия:

Откройте созданный проект.

Выберите в верхней части окна конструктора проектов вкладку Data (Данные). Курсор по умолчанию устанавливается в начале вкладки на значении Databases (Базы данных).

Нажмите кнопку New (Новый) в окне проекта.

В открывшемся диалоговом окне New Database (Новая база данных) нажмите кнопку New Database (Новая база данных).

В поле ввода Enter database (Введите имя базы данных) появившегося на экране диалогового окна Create (Создать) задайте имя создаваемой базы данных, убедившись, что в поле Тип файла установлен тип сохраняемого файла Database (База данных), а в раскрывающемся списке Папка правильно указана папка, в которой вы хотите расположить создаваемую базу данных.

Для сохранения созданной базы данных нажмите кнопку Сохранить. После этого откроется пустое окно базы данных Database Designer (KoHdf руктор базы данных) (рис. 4.1). Используя панель инструментов Database Designer (Конструктор базы данных), команды меню Database (База данных) и контекстное меню, в окне конструктора базы данных вы можеп создавать новые таблицы, модифицировать существующие, создавать для них индексы, устанавливать отношения между таблицами.

Замечание

Если панель инструментов Database Designer (Конструктор базы данных) не видна на экране, в меню View (Вид) выберите команду Toolbars (Панели инструментов). Открывается диалоговое окно Toolbars (Панель инструментов), в котором установите флажок Database Designer (Конструктор базы данных).




Рис. 4.1. Пустое окно конструктора базы данных

В начале создания базы данных окно конструктора базы данных пусто, рис. 4.2 показано, как выглядит это окно с размещенными в нем таблицами.



Рис. 4.2. Окно конструктора базы данных Sales с размещенными в нем таблицами

Для создания в конструкторе базы данных новых таблиц и модификации существующих вы можете использовать:

команды меню Database (База данных) (табл. 4.1);

команды контекстного меню, появляющегося при нажатии правой кнопки мыши в окне конструктора базы данных;

панель инструментов Database Designer (Конструктора базы данных).

Таблица 4.1.Назначение команд меню Database

Команда Назначение
New Table (Новая таблица) Создает новую таблицу
Add Table (Добавить таблицу) Добавляет созданную таблицу в базу данных
New Remote View (Новое удаленное представление) Создает удаленное представление данных
New Local View (Новое локальное представление) Создает локальное представление данных
Modify (Модифицировать) Открывает таблицу в конструкторе таблиц
Browse (Обзор таблицы) Показывает содержимое таблицы в режиме Browse (Обзор)
Remove (Удалить) Удаляет таблицу из базы данных
Find Object (Найти объект) Находит указанный вами объект в окне конструктора базы данных
Rebuild Table Indexes (Перестроить индексы) Перестраивает индексы
Remove Deleted Records (Удалить помеченные записи) Физически удаляет из таблицы помеченные для удаления записи
Edit Relationship (Редактирование отношения) Редактирует отношения между таблицами
Edit Referential Integrity (Редактирование условия целостности) Определяет условия целостности данных
Edit Stored Procedures (Редактирование хранимых процедур) Открывает окно редактирования хранимой процедуры
Connections (Соединения) Выводит на экран диалоговое окно Connections (Соединения), в котором вы можете создавать или модифицировать соединения с удаленными данными
Arrange (Упорядочить) Упорядочивает объекты по имени или типу и выравнивает их по горизонтали или вертикали
Refresh (Обновить) Обновляет информацию в окне конструктора базы данных
Clean Up Database (Очистка базы данных) Очищает базу данных от помеченных на удаление объектов
Properties (Свойства) Выводит на экран диалоговое окно Database Properties (Свойства базы данных)
<


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

команды Expand All (Развернуть все) и Collapse All (Свернуть все), предназначенные, соответственно, для раскрытия и свертывания уровней вложенности объектов в окне конструктора базы данных.

Панель инструментов Database Designer (Конструктор базы данных) содержит кнопки для выполнения наиболее часто используемых операций над базой данных. Вид панели инструментов приведен на рис. 4.3, а описание кнопок панели инструментов — в табл. 4.2.



Рис. 4.3. Панель инструментов Database Designer

Таблица 4.2. Назначение кнопок панели инструментов Database Designer

Кнопка Название Назначение
New Table (Новая таблица) Создает новую таблицу
Add Table (Добавить таблицу) Добавляет ранее созданную таблицу в базу данных
Remove Table (Удалить таблицу) Удаляет таблицу из базы данных
New Remote View (Новое удаленное представление) Создает удаленное представление данных
New Local View (Новое локальное представление) Создает локальное представление данных
Modify Table (Модифицировать таблицу) Открывает таблицу в конструкторе таблиц
Browse Table (Обзор таблицы) Показывает содержимое таблицы в режиме Browse (Обзор)
Edit Stored Procedures (Редактирование хранимых процедур) Открывает окно для редактирования хранимых процедур
Connections (Соединения) Создает связь с удаленными данными

Создание базы данных вне проекта


Visual FoxPro позволяет создавать базу данных вне проекта. Для этого воспользуйтесь одним из перечисленных далее способов.

Выберите в меню File (Файл) команду New (Новый). В открывшемся диалоговом окне New (Новый) выберите опцию Database (База данных), а затем нажмите кнопку New file (Новый файл). На экране откроется диалоговое окно Create (Создать), в поле Enter database (Введите имя базы данных) которого задайте имя создаваемой базы данных и нажмите кнопку Сохранить. Созданный файл получит расширение DBC.

В диалоговом окне Task Pane Manager (Менеджер панели задач) воспользуйтесь ссылкой New Database (Новая база данных). На экране откроется диалоговое окно Create (Создать), в котором задайте имя создаваемой базы данных и нажмите кнопку Сохранить.

Введите в командном окне Command (Команда) команду create database, имеющую следующий синтаксис:

CREATE DATABASE [имяБазыДанных | ?]

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

Замечание

Базу данных, созданную вне проекта, можно использовать в разных проектах.



Создание отношений между таблицами


Как правило, в Visual FoxPro при создании форм, отчетов и запросов используется несколько таблиц, между которыми установлены постоянные отношения. Такие таблицы называются связанными. Из двух связанных таблиц одна является главной, а другая — подчиненной. Главную таблицу называют родительской, а подчиненную — дочерней. При создании индексов для родительской таблицы должен быть определен ключ типа Primary (Первичный) или типа Candidate (Кандидат), а для дочерней таблицы — индекс для связи с родительской таблицей типа Regular (Обычный).

Рассмотрим, например, отношения между таблицей customer, содержащей список клиентов, и таблицей Phoncust, в которой размещены данные о телефонах, по которым можно связываться с клиентами. Таблица customer является родительской по отношению к таблице Phoncust. В свою очередь, таблица Phoncust является дочерней по отношению к таблице customer. При создании отношений между этими таблицами для customer должен быть определен первичный ключ, а для таблицы phoncust — создан индекс по полю, содержащему код клиента, по которому осуществляется связь между таблицами.

Для создания отношений между таблицами customer и Phoncust выполните следующие действия:

Откройте окно конструктора базы данных, и которой эти таблицы размещены.

Откройте таблицу customer в конструкторе таблиц. Для этого щелкните на ней правой кнопкой мыши и в контекстном меню выберите команду Modify (Модифицировать).

На вкладке Indexes (Индексы) создайте первичный ключ для поля icdcustomer. Для этого в поле столбца Name (Имя) пиелите наимснова-ние индекса icdcustomer. Для простого индекса в качестве ею имени удобно использовать наименование поля, по которому индекс создайся.

В столбце Туре (Тип) выберите из списка значение Primary (Первичный).

В столбце Expression (Выражение) нажмите кнопку построителя. В открывшемся диалоговом окне Expression Builder (Построитель выражений) в списке Fields (Поля) дважды щелкните мышью на поле icdcustomer. Оно будет перенесено в поле Expression (Выражение). Нажмите кнопку ОК для закрытия диалогового окна.


Индекс для таблицы customer создан. Нажмите кнопку ОК для закрытия окна конструктора таблицы.

Откройте в конструкторе таблицу PhonCust.

Перейдите на вкладку Indexes (Индексы) и создайте ключ типа Regular (Обычный) для поля icdcustomer.

Нажмите кнопку ОК для закрытия окна конструктора таблицы.

Выберите родительскую таблицу. В нашем примере это таблица Customer.

Установите курсор мыши на первичный ключ таблицы icdcustomer.

Замечание

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

Нажмите кнопку мыши и, не отпуская ее, переместите курсор мыши на индекс дочерней таблицы PhonCust, по которому устанавливается связь.

Отпустите кнопку мыши.

 В окне конструктора базы данных отображается в виде линии созданное отношение между таблицами (рис. 4.20). Если дважды щелкнуть левой кнопкой мыши на линии, то откроется диалоговое окно Edit Relationship (Редактирование отношения) (рис. 4.21), в котором слева приведено наименование родительской таблицы и расположен раскрывающийся список индексов таблицы, а справа размешена аналогичная информация о дочерней таблице. Используя раскрывающиеся списки, можно изменять индексы, по которым связываются таблицы. В этом диалоговом окне указан также тип установленного отношения между таблицами. Для сохранения отношения нажмите кнопку ОК, а для отказа — кнопку Cancel (Отмена).



Рис. 4.20. Отображение связи между таблицами



Рис. 4.21. Диалоговое окно Edit Relationship для установления отношений между таблицами



Рис. 4.22. Контекстное меню

Установите курсор на линию, соединяющую связываемые таблицы. Толщина линии увеличится. Не сдвигая курсора нажмите правую кнопку мыши, появится контекстное меню, содержащее четыре команды (рис. 4.22). Команда Remove Relationship (Удалить отношение) удаляет установленное между таблицами отношение. При выборе команды Edit Relationship (Редактирование отношения) открывается диалоговое окно Edit Relationship (Редактирование отношения), позволяющее изменить установленное отношение. Команда Edit Referential Integrity (Редактирование целостности данных) открывает диалоговое окно Referential Integrity Builder (Построитель целостности данных). Об этом окне речь пойдет в следующем разделе.


Создание первичного ключа для таблицы


Рассмотрим последовательность ваших действий при создании первичного ключа для таблицы customer. Так как первичный ключ таблицы должен быть уникальным, для его создания можно использовать поле icdcustomer таблицы, содержащее коды клиентов. Это поле было добавлено в таблицу специально, так как значения остальных полей не являются уникальными.

1. Откройте окно конструктора таблиц для таблицы customer. Для этого в окне проекта установите курсор на модифицируемую таблицу и нажмите кнопку Modify (Модифицировать) конструктора проекта.

Рис. 4.19. Первичный ключ таблицы Customer

2. В окне Table Designer (Конструктора таблиц) перейдите на вкладку Indexes (Индексы).

3. В поле Name (Имя) введите имя индекса icdcustomer.

4. Из списка возможных типов индекса в поле Туре (Тип) выберите значение Primary (Первичный).

5. Перейдите в поле Expression (Выражение) и введите выражение для индекса icdCustomer.

6. Установите переключатель столбца Order (Упорядочение) в значение По возрастанию. Результат создания первичного ключа представлен на рис. 4.19.

7. Для завершения создания индекса нажмите кнопку ОК.



Создание составного индекса


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

Откройте окно конструктора Table Designer (Конструктор таблиц) для таблицы customer и перейдите на вкладку Indexes (Индексы).

В поле Name (Имя) введите имя индекса СustName.

Из списка возможных типов индекса в поле Туре (Тип) выберите значение Regular (Обычный).

Для задания индекса нажмите кнопку открытия построителя выражений для поля Expression (Выражение). В окне построителя сформируйте следующее выражение:

cLastName + cFirstName + cSecondName

Проверьте синтаксис выражения, воспользовавшись кнопкой Verify (Проверить), и закройте окно построителя выражений.

Для завершения создания индекса нажмите кнопку ОК.



Создание таблицы с помощью мастера


Для создания таблицы с помощью мастера из конструктора базы данных выполните следующие действия:

Откройте диалоговое окно New Table (Новая таблица) (рис. 4.4), выполнив любое из действий:

выберите команду New Table (Новая таблица) из меню Database (База данных);

выберите команду New Table (Новая таблица) контекстного меню;

нажмите кнопку New Table (Новая таблица) на панели инструментов Database Designer (Конструктор базы данных).

В диалоговом окне New Table (Новая таблица) нажмите кнопку Table Wizard (Мастер таблицы). На экране появляется первое диалоговое окно мастера.

Рис. 4.4. Диалоговое окно New Table

Visual FoxPro предлагает целый ряд таблиц, которые вы можете использовать в качестве прототипов, что позволит сэкономить время и обеспечить стандартные имена и типы данных для полей создаваемой таблицы.

На первом шаге вам необходимо, используя предлагаемые Visual FoxPro прототипы таблиц и их поля, сформировать список полей создаваемой таблицы (рис. 4.5). Для этого из списка Sample Tables (Примеры таблиц) выберите таблицу, которую хотите взять за основу при создании своей таблицы. При этом в списке Available Fields (Имеющиеся поля) отобразятся поля выбранной таблицы.

Рис. 4.5. Формирование списка полей

Замечание

Содержимое списка Sample Tables (Примеры таблиц) можно изменять, используя расположенные под ним опции. Для создания таблиц делового содержания установите опцию Business (Деловые). В списке будут отображаться таблицы Accounts, Customers и т.д. При создании таблиц, содержащих данные личного характера, установите опцию Personal (Личные).

Перенесите из списка Available Fields (Имеющиеся поля) в список Selected Fields (Выбранные поля) поля, которые вы хотите разместить в создаваемой таблице.

Для переноса полей используйте кнопки, описанные в табл. 4.3.

Таблица 4.3. Назначение кнопок диалогового окна Table Wizard — Step

Кнопка Назначение
Переносит текущее поле из списка Available Fields (Имеющиеся поля) в список Selected Fields (Выбранные поля)
Переносит все поля из списка Available Fields (Имеющиеся поля) в список Selected Fields (Выбранные поля)
Возвращает текущее поле из списка Selected Fields (Выбранные поля) в список Available Fields (Имеющиеся поля)
Переносит все поля из списка Selected Fields (Выбранные поля) в список Available Fields (Имеющиеся поля)
<
Замечание

Если в качестве прототипа при создании таблицы вы хотите использовать одну из созданных вами ранее таблиц, нажмите кнопку Add (Добавить), расположенную в левом нижнем углу, и в открывшемся диалоговом окне Open (Открыть) выберите требуемую таблицу. Наименование этой таблицы будет размещено в списке Sample Tables (Примеры таблиц) окна мастера.

Закончив формирование списка полей, нажмите кнопку Next (Далее).

На следующем шаге работы мастера (рис. 4.6) вам необходимо указать, создаете вы свободную таблицу или данная таблица будет добавлена в базу данных. Для этого воспользуйтесь опциями, назначение которых описано в табл. 4.4.

Таблица 4.4. Назначение опций диалогового окна Table Wizard — Step 1

По умолчанию установлена опция Create my table as a stand-alone free table (Создать свободную таблицу). Для размещения создаваемой таблицы в базе данных установите опцию Add my table to the following database (Добавить таблицу в базу данных) и выберите из расположенного ниже списка ее наименование. Если в списке не окажется необходимой вам базы данных, нажмите кнопку, расположенную справа от списка. Затем в открывшемся на экране диалоговом окне Open (Открыть) выберите нужную базу данных. Ее имя будет размещено в раскрывающемся списке.

Если вы хотите задать внутреннее имя таблицы, отображаемое внутри базы данных, воспользуйтесь полем Table Name (Имя таблицы). Завершив установки параметров в текущем окне мастера, нажмите кнопку Next (Далее) для перехода к следующему шагу.



Рис. 4.6. Указание типа создаваемой таблицы

В следующем диалоговом окне мастера (рис. 4.7) можно изменить наименования выбранных полей, их тип и размеры, используя для этого поля Field Name (Имя поля), Туре (Тип), Width (Ширина) и Decimals (Десятичные). Можно также, используя поле ввода Caption (Надпись), задать для каждого поля заголовок, который будет использоваться при просмотре таблицы и в качестве надписи к полю таблицы при создании форм с помощью мастера.

Флажок Allow null values (Разрешать нулевые значения) позволяет указать, может ли поле быть пустым, то есть не содержать значений.



Чтобы определить для поля ввода маску, в соответствии с которой в него будут вводиться данные, используйте переключатель Input Mask (Маска ввода), содержащий следующие опции:

Pre-defined (Предопределенная);

Custom mask (Пользовательская маска)

Для использования маски, предлагаемой Visual FoxPro, установите опцию Pre-defined (Предопределенная), а затем из раскрывающегося списка, расположенного справа от опции, выберите требуемое вам значение.

В том случае, если ни одно из значений списка вам не подходит, установите опцию Custom mask (Пользовательская маска) и введите в расположенное справа поле выражение для маски. Для указания формата поля можно использовать значения раскрывающегося списка Format (Формат). Установите в диалоговом окне все необходимые значения поочередно для всех полей таблицы и нажмите кнопку Next (Далее) для перехода к следующему шагу.



Рис. 4.7. Модификация полей

На третьем шаге в работе мастера (рис. 4.8) с помощью раскрывающегося списка Primary Key (Первичный ключ), содержащего список всех полей таблицы, задайте первичный ключ таблицы. При этом вы должны помнить, что поле может использоваться для задания первичного ключа таблицы только в том случае, если оно содержит неповторяющиеся значения. Например, для таблицы customer, содержащей список клиентов, в качестве первичного ключа можно использовать поле customeriD с кодами клиентов.

Используя список Field Name (Имя поля), укажите дополнительные индексы для таблицы, установив соответствующие флажки слева от наименования полей. Затем нажмите кнопку Next (Далее).



Рис. 4.8. Окно мастера для определения первичного ключа и индексов таблицы



Рис. 4.9. Задание связей между создаваемой таблицей и таблицами базы данных

Если вы создаете не свободную таблицу, а таблицу, входящую в базу данных, то на следующем шаге мастера определяются связи между новой таблицей и таблицами базы данных (рис. 4.9). В списке My new <имя_таблицы> table (Моя новая таблица) диалогового окна содержится перечень всех существующих и возможных связей для новой таблицы. Используя данный список и диалоговое окно Relationships (Отношения), открываемое при нажатии кнопки Relationships (Отношения), задайте тип связи между создаваемой таблицей и остальными таблицами базы данных.



Замечание

Если в базе данных не содержится таблиц, то сразу осуществляется переход к последнему шагу мастера.



Рис. 4.10. Задание режима дальнейшей работы с таблицей

На последнем шаге работы мастера (рис. 4.10) указывается режим дальнейшей работы с таблицей. Для этого необходимо выбрать одну из трех опций, назначение которых описано в табл. 4.5.

Таблица 4.5. Назначение опций диалогового окна Table Wizard — Step 4

Опция Назначение
Save table for later use (Сохранить таблицу ) Сохраняет созданную таблицу
Save table and browse it (Сохранить таблицу и открыть для просмотра) Сохраняет созданную таблицу и открывает ее в режиме Browse (Обзор) для просмотра содержимого
Save table and modify in the Table Designer (Сохранить таблицу и открыть в окне конструктора для модификации) Сохраняет созданную таблицу и открывает ее в конструкторе таблиц для модификации
Выбрав одну из трех опций, нажмите кнопку Finish (Готово). На экране открывается диалоговое окно Save As (Сохранить как) для задания имени таблицы. Введите в поле Enter Table (Введите имя таблицы) имя таблицы, укажите папку, в которой ее сохраняете, и нажмите кнопку Сохранить.

Таблица создана и, в зависимости от установленной опции, откроется в режиме Browse (Обзор) или в конструкторе таблиц для дальнейшей модификации.


Создание таблицы в конструкторе таблиц


Мы рассмотрели назначение основных параметров окна конструктора таблиц. Теперь можно приступать к созданию таблицы.

Рис. 4.13. Структура таблицы Customer

Рассмотрим последовательность действий при создании таблицы customer (рис. 4.13), содержащей сведения о клиентах, из конструктора базы данных sales, предназначенной для учета заказов клиентов.

Откройте проект sales.

В иерархической структуре конструктора проекта установите курсор на базу данных sales и нажмите кнопку Modify (Модифицировать). На экране откроется окно конструктора базы данных.

Находясь в конструкторе базы данных, нажмите кнопку New Table (Новая таблица) на панели инструментов Database Designer (Конструктор базы данных).

В поле Enter table name (Введите имя таблицы) диалогового окна Create (Создать) задайте имя таблицы Customer и нажмите кнопку Сохранить. На экране появится окно конструктора таблицы Table Designer (Конструктор таблиц). Курсор находится в строке ввода столбца Name (Имя). Вы можете вводить имя, тип и ширину полей создаваемой таблицы.

В строке ввода столбца Name (Имя) введите наименование поля, содержащего код клиента icdCustomer. Для перехода в следующий столбец воспользуйтесь мышью или нажмите клавишу <ТаЬ>. Нажмите кнопку раскрытия списка Туре (Тип) и выберите значение Integer (Autolnc) (Целое число с инкрементом). Кроме того, вы можете изменить тип поля с помощью клавиш <i> и <Т>. Ширина поля типа Integer (Autolnc) равна 4. Данное значение устанавливается автоматически, и вы не можете его изменить.

Перейдите в поле Caption (Надпись), расположенное в области Display (Отображение), и укажите заголовок поля Код клиента. В поле Field comment (Комментарий) введите краткое описание поля.

Аналогичным образом определите остальные поля. Для перехода с одного поля на другое используйте клавишу <ТаЬ>, клавиши-стрелки или мышь. Для изменения ширины поля используйте кнопки изменения ширины поля, расположенные в правой части поля, а также клавиши <Т> и <1>.


Замечание

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

При описании поля ccountry, указывающего страну, определите значение, вводимое в поле по умолчанию при добавлении новой записи. Для этого перейдите в поле Default value (Значение по умолчанию) и введите Россия.

После завершения определения структуры таблицы нажмите кнопку ОК.

Замечание

В окне конструктора вы можете отказаться от создания новой таблицы или введенных в ее структуру изменений. Для этого нажмите кнопку Cancel (Отмена). На экране появится запрос системы об отмене или принятии изменений (рис. 4.14). Выберите значение Yes (Да).



Рис. 4.14. Запрос системы об отмене изменений структуры таблиц


Таблицы — основа базы данных


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

Таблица состоит из строк и столбцов и имеет уникальное имя в базе данных. В каждой из таблиц содержится информация о каких-либо объектах одного типа.

В Visual FoxPro 8.0 вы можете создавать как таблицы, входящие в базу данных, так и отдельные таблицы, называемые свободными, аналогичные создаваемым в предыдущих версиях FoxPro. В данной главе мы остановимся на создании таблиц, входящих в состав базы данных, поскольку в этом случае вы сможете использовать все средства, предоставляемые Visual FoxPro для работы с таблицами.



Типы полей


Поля таблицы предназначены для хранения в них данных. Это могут быть числа, текстовая информация, даты, графические файлы и т. д.

Для определения типа данных, размещаемых в поле, используются тип поля, его ширина и количество знаков после запятой. Для их ввода предназначены столбцы Туре (Тип), Width (Ширина) и Decimal (Десятичные) вкладки Fields (Поля) конструктора таблиц.

В Visual FoxPro допустимыми являются типы полей, указанные в табл. 4.6.

Таблица 4.6. Типы полей Visual FoxPro

Тип Наименование Отображаемые данные
Текстовый Character, Character (binary) Текстовые поля могут содержать буквы, цифры и специальные символы. Максимальная ширина поля составляет 254 символа. Тип Character (binary) используется в том случае, если не требуется учитывать кодовую страницу отображаемых данных
Числовой

Integer, Numeric, Float, Double, Integer (Autolnc)

Integer отображает целые числа от -2147483647 до +2147483647. Тип Integer (Autolnc) используется в том случае, когда необходимо, чтобы значение числа автоматически увеличивалось. Поле с таким типом доступно только для чтения.

Числовые поля типа Numeric и Float отображают данные с фиксированной точкой в диапазоне от -0.9999999999*10+19 до +0.9999999999*10+2°.

Тип данных Double используется для хранения данных с высокой точностью в диапазоне от ±4.94065648541247*10-324 до ±8.9884656743115*10+307

Денежный Currency В поле денежного типа могут содержаться числа от -922337203685477.5807 до 922337203685477.5807
Дата Date В поле типа Date может содержаться любая дата от 01.01.0001 до 31.12.9999 г.
Дата и время DateTime В поле типа DateTime может содержаться любая дата от 01.01.0001 до 31.12.9999 г. и время от 00:00:00 a.m. до 11:59:59 p.m.
Логический Logical Содержит логическое значение True (Т.) (Истина) или False (,F.) (Ложь)
Текстовое поле произвольной длины Memo, Memo (binary) Memo-поле содержит символьные данные большого объема. Тип Memo (binary) используется в том случае, если не требуется изменять кодовую страницу хранимых данных
Двоичное поле произвольной длины General Поле данного типа предназначено для хранения в таблицах изображений и других двоичных данных



Ввод наименований полей


Наименования полей таблицы вводятся на вкладке Fields (Поля) в строке ввода столбца Name (Имя). При задании наименований полей вы можете использовать буквы, цифры и знак подчеркивания. Ваши попытки ввести специальные символы Visual FoxPro проигнорирует.

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

Visual FoxPro не позволяет иметь в таблице поля с одинаковыми именами. При вводе имени, уже имеющегося в таблице, программа выдает предупреждение, указывающее, что поле с таким именем в таблице уже существует.



Задание свойств полей


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

Область Display (Отображение) содержит поля, позволяющие задать форматы ввода и отображения данных (табл. 4.7).

Таблица 4.7. Назначение полей области Display вкладки Fields

Поле Назначение
Format (Формат) Задает формат отображения данных в формах, отчетах и окне Browse
Input mask (Маска ввода) Задает формат ввода данных
Caption (Надпись) Определяет заголовок поля

Область Field validation (Проверка правильности ввода) позволяет задать параметры, описанные в табл. 4.8.

Таблица 4.8. Назначение полей области Field validation вкладки Fields

Свойство Назначение
Rule (Условие)

Условие правильности ввода данных
Message (Сообщение)

Сообщение, выводимое при неправильном вводе данных в поле
Default value (Значение по умолчанию)

Значение, вводимое в поле по умолчанию

Область Map field type to classes (Используемые типы полей для классов) предназначена для указания библиотеки и имени класса, который будет использоваться для создания объектов при размещении данного поля таблицы в форме (табл. 4.9).

Таблица 4.9. Назначение полей области Map field type to classes вкладки Fields

Поле

Назначение

Display library (Показывать библиотеку)

Задает местоположение и имя файла библиотеки классов
Display class (Показывать класс)

Задает имя класса из выбранной библиотеки

Область Autolncrement (Автоматический инкремент) доступна только для полей таблицы с типом Integer (Autolnc) и позволяет задать параметры, описанные в табл. 4.10.

Таблица 4.10. Назначение полей области Autolncrement вкладки Fields

Поле Назначение
Next Value (Начальное значение)

Задает начальное значение поля, имеющего тип Integer (Autolnc)
Step (Шаг)

Задает число от 1 до 255, на которое будет увеличиваться значение поля

В текстовом поле Field comment (Комментарий) можно ввести краткое описание поля, которое может потребоваться при последующих модификациях структуры таблицы и сопровождении проекта.