Студопедия — РЕАЛИЗАЦИЯ БАЗЫ ДАННЫХ В VISUAL FOXPRO
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

РЕАЛИЗАЦИЯ БАЗЫ ДАННЫХ В VISUAL FOXPRO






2.1 ФАЙЛЫ БАЗЫ ДАННЫХ VISUAL FOXPRO

База данных в Visual FoxPro состоит из набора файлов различного назначения. Главным файлом БД является файл, имеющий имя, соответствующее имени БД, и расширение *.dbc. Он дополняется файлом примечаний (расширение *.dct) и индексным файлом (расширение *. dcx), имеющими такое же имя. Главный файл и его файл примечаний содержат информацию о составе БД, требования к данным, хранимые процедуры БД и другую общую информацию о БД.

Файлы с расширениями *.dbf предназначены для хранения таблиц БД. В каждом таком файле хранится отдельная таблица. При наличии в таблице полей примечаний (полей типа memo) табличный файл дополняется файлом примечаний, имеющим такое же имя, но расширение *.fpt. В файле примечаний сохраняется текстовая информация memo-полей, разбитая на блоки заданного размера. Файл примечаний автоматически открывается при открытии своего табличного файла и закрывается вместе с ним.

Кроме файла примечаний, табличный файл может дополняться одним или несколькими файлами с расширениями *.cdx и *.idx, предназначенными для хранения созданных для таблицы индексов. Индексы создаются для упорядочивания данных, ускорения поиска и отбора информации по различным ключевым выражениям и установления связей между таблицами. Каждый индекс указывает последовательность следования записей таблицы в соответствии с заданным для него ключевым выражением. Индексный idx-файл использует устаревший формат и предназначен для хранения одного индекса. Имя idx-файла произвольно и определяется при создании индекса. Индексный cdx-файл используется для независимого хранения произвольного числа индексов. Индексы, хранящиеся в cdx-файле, называются тегами (tag) этого файла. Индексные cdx-файлы имеют две разновидности. Структурный cdx-файл имеет такое же имя, как табличный файл, и автоматически открывается и закрывается вместе с ним. Неструктурный cdx-файл имеет произвольное имя, определяемое при создании, и должен явно открываться и закрываться пользователем или программой.

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

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

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

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

2.2 СОЗДАНИЕ БАЗЫ ДАННЫХ VISUAL FOXPRO

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

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

2.2.1 Создание БД с помощью конструктора базы данных

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

При открытии окна конструктора БД в основное меню добавится пункт Database и откроется инструментальная панель Database Designer.

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

Подменю Database содержит набор команд работы с БД и ее элементами (таблица 2.1).

Рисунок 7 – Окно конструктора базы данных

Инструментальная панель Database Designer содержит набор кнопок, дублирующих команды New Table, Add Table, Remove Table, New Remote View, New Local View, Modify Table, Browse Table, Edit Stored Procedures и Connections подменю Database.

Таблица 2.1 - Команды подменю Database

Команда Назначение
   
New Table Создает новую таблицу БД
Add Table Добавляет существующую таблицу в базу данных
New Remote View Создает удаленное представление данных
New Local View Создает локальное представление данных
Modify Модифицирует структуру выбранной таблицы
Browse Показывает содержимое таблицы в режиме Browse
Remove Удаляет таблицу из БД и стирает, если задано, с диска
Find Object Находит заданный объект в окне конструктора БД
Продолжение таблицы 2.1
   
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, команду Help, а также команды для раскрытия уровней вложенности объектов в окне конструктора базы данных (Expand All) и их свертывания (Collapse All).

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

2.2.2 Другие способы создания БД

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

а) Интерактивное создание с помощью пунктов меню File/New с последующим выбором опций Database/New file. Созданная БД будет независимой и для введения ее в проект необходимо выполнить операцию добавления к проекту.

б) Программное создание с помощью команды CREATE DATABASE.

2.3 СОЗДАНИЕ ТАБЛИЦЫ БАЗЫ ДАННЫХ

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

Создание таблицы обычно выполняется интерактивно с помощью конструктора таблицы. Для создания таблицы в этом случае запускается любым способом операция добавления новой таблицы (кнопка New диспетчера проекта или кнопка New Table инструментальной панели Database Designer, команда New Table подменю Database или контекстного меню). В открывшемся окне выбирается New Table, a затем в окне Create выбирается тип файла Table/DBF, задаются имя и место размещения создаваемой таблицы. После нажатия кнопки Сохранить на экране откроется пустое окно конструктора таблицы Table Designer, в котором будет определяться описание таблицы и ее индексов (на рисунке 8 окно конструктора таблицы приведено для лучшего понимания с уже введенными описаниями полей таблицы).

Окно конструктора таблицы содержит вкладки Fields, Indexes и Table. Во вкладке Fields, которая является активной при открытии окна диалога, определяются поля таблицы и описываются их свойства. Вкладка Indexes служит для определения индексов таблицы, a вкладка Table предназначена для определения требований, предъявляемых к данным на уровне таблицы.

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

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

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

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

Тип данных поля выбирается в позиции Type из списка допустимых типов. Основными типами данных Visual FoxPro для полей таблиц являются типы, приведенные в таблице 2.2. Среди приведенных типов следует обратить внимание на тип Integer (Autoinc), позволяющий реализовать автоматическое создание уникальных идентификаторов для полей таблицы.

Таблица 2.2 – Типы полей таблиц Visual FoxPro

Тип Описание
   
Character Символьное поле заданной длины (до 254 символов)
Date Поле даты (содержит день, месяц и год)
DateTime Поле даты и времени (содержит день, месяц, год, часы, минуты, секунды)
Logical Логическое поле (содержит.T. или.F.)
Numeric Числовое поле с фиксированной точкой. Задается общая длина (до 20 позиций) и число знаков после точки.
Integer Целое число, размер 4 байта
Integer (Autoinc) Целое число, размер 4 байта. В отличие от Integer доступно только чтение, поле заполняется автоматически при создании новой записи путем увеличения достигнутого значения на заданный шаг
Double Число с плавающей точкой двойной точности, размер 8 байтов
Memo Текстовое поле произвольной длины. Значение хранится в файле примечаний *.fpt, а в таблице хранится лишь ссылка на место хранения

В позиции Width задается ширина поля, если она не фиксирована, в позиции Decimal - количество десятичных знаков для типа Numeric.

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

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

Требуемые свойства поля, выбранного в списке, задаются в следующих элементах вкладки Fields (рис.8).

а) Позиция NULL. Установка пометки разрешает использовать в поле значение NULL. Значение NULL в явном виде указывает отсутствие информации в поле, что позволяет отличать незаполненное поле от поля, заполненного пустым или нулевым значением. Значение NULL вводится в поле нажатием клавиш Ctrl+0 при интерактивном вводе данных или присвоением полю значения.NULL. при программной записи данных.

б) Позиция Index. Задается создание регулярного индекса по текущему полю (подробнее создание индексов будет описано ниже).

в) Поле Format. Задается формат отображения данных в формах, отчетах и окне Browse.

г) Поле Input Mask. Задается формат ввода данных.

д) Поле Caption. Задается заголовок поля, используемый при выводе заголовков в формах, отчетах и окне Browse.

е) Поле Rule. Задается логическое выражение, описывающее условие правильности введенных в поле данных. Проверка правильности данных выполняется при попытке выхода из поля. Если выражение условия принимает значение.T., то введенное значение считается верным и выход из поля разрешается.

ж) Поле Message. Задается текст сообщения, выводимого при обнаружении неправильного ввода данных.

з) Поле Default value. Задается значение по умолчанию, автоматически заносимое в поле при создании новой записи.

и) Поле Next Value. Задается начальное значение для поля типа Integer (Autoinc).

к) Поле Step. Задается шаг увеличения значения для поля типа Integer (Autoinc).

Поля области Map field type to classes предназначены для выбора библиотеки и имени класса, которые будут использоваться для автоматического создания объектов в форме при перетаскивании данного поля таблицы на форму. Поле Field Comment позволяет ввести текстовый комментарий для поля.

Задание свойств таблицы

На вкладке Table (рис.9) отображаются данные о таблице и задаются требуемые свойства таблицы. Для задания свойств таблицы используются следующие поля вкладки.

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

б) Поле Rule. Задается логическое выражение, описывающее условие правильности введенных в запись данных. Проверка правильности данных будет выполняться при попытке выхода из записи. Если выражение условия при проверке принимает значение.T., то введенные значения считаются верными и выход из записи разрешается.

в) Поле Message. Задается текст сообщения, выводимого при обнаружении неправильного ввода данных.

Рисунок 9 – Вкладка свойств таблицы

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

- контроль допустимости выполнения операций с записями;

- регистрация работы пользователя с записями;

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

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

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

Вкладка Indexes (рис.10) позволяет создавать новые индексы, а также просматривать, изменять и удалять имеющиеся индексы. Все индексы, представленные в данном окне, сохраняются в структурном индексном файле. Создание idx-файлов или неструктурных cdx-файлов необходимо выполнять программ­ным путем.

Рисунок 10 – Вкладка задания индексов

 

На вкладке Indexes каждый индекс описывается в отдельной строке.

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

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

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

Таблица 2.3 – Типы индексов Visual FoxPro

Тип Описание
   
Primary Первичный индекс. Может быть создан только для таблицы, включенной в базу данных. Поля, входящие в первичный индекс, не должны допускать ввода пустых значений (NULL). Значения индексного выражения для всех записей должны различаться. Таблица может иметь только один первичный индекс.
Продолжение таблицы 2.3
   
Candidate Индекс-кандидат. Этот индекс обладает всеми качествами первичного индекса и не является им только по той причине, что таблица не может иметь более одного первичного индекса. Таблица может иметь не­сколько индексов-кандидатов
Regular Регулярный индекс. Хранит значения индексного выражения для всех записей таблицы, допуская их не уникальность. Поля, входящие в индексное выражение, могут быть пустыми. Таблица может иметь не­сколько регулярных индексов.

 

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

В позиции Order выбирается возрастающий или убывающий порядок расположения данных в индексе.

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

Создание свободных таблиц

Использование свободных таблиц может быть полезным:

- для совместного использования информации несколькими БД;

- для хранения данных в формате, доступном для различных версий БД;

- для хранения редко использующихся данных, загромождающих БД.

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

2.3.2 Другие способы создания таблиц и индексов

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

а) Интерактивное создание таблицы с помощью пункта меню File/New с последующим выбором опций Table/New file. Созданная таблица будет независимой от проекта и для введения ее в проект необходимо выполнить операцию добавления к проекту.

б) Программное создание таблицы с помощью команды CREATE TABLE.

в) Программное создание индекса с помощью команды INDEX ON. С помощью данной команды могут быть созданы как idx-файлы, так и cdx-файлы разного типа.

г) Программное создание таблиц и индексов по имеющемуся образцу. Используются команды COPY STRUCTURE, CREATE FROM, COPY FILE, COPY INDEXES, COPY TAG.

2.4 СОЗДАНИЕ ОТНОШЕНИЙ МЕЖДУ ТАБЛИЦАМИ БД

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

Установление отношения при проектировании БД

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

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

Задание условий ссылочной целостности

Для определения условий ссылочной целостности нужно выполнить команду Edit Referential Integrity, выбрав ее из системного меню Visual FoxPro или из контекстного меню конструктора базы данных. Команда также может быть выполнена из окна редактирования связи Edit Relationship, вызываемого двойным щелчком на линии связи или соответствующей командой системного меню. В результате откроется окно конструктора условий целостности данных Referential Integrity Builder, которое содержит перечень всех установленных отношений между таб­лицами (рис.11). Таблица описания условий ссылочной целостности содержит:

- наименования родительской и до­черней таблиц;

- наименования индексов (тегов), используемых для связи;

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

Рисунок 11 – Окно задания ссылочной целостности

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

Для поддержки отношения можно выбрать следующие правила.

а) Для попытки изменения в родительской таблице значения полей индекса, использующегося для связи (Rules for Updating) можно выбрать следующие реакции:

- Cascade. При изменении значений полей индекса в родительской таблице автоматически осуществля­ется каскадное изменение всех соответствующих значений в дочерней таблице;

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

- Ignore. Разрешается изменять значения полей индекса в родительской таблице, независимо от су­ществования связанных записей в дочерней таблице. Целостность связей в этом случае не поддерживается.

б) Для попытки удаления записи в родительской таблице (Rules for Deleting) можно выбрать следующие реакции:

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

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

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

в) Для попытки добавления новой записи в дочернюю таблицу или редактирования в дочерней таблице полей индекса, использующегося для связи (Rules for Inserting), можно выбрать следующие реакции:

- Restrict. Запрещается принимать запись, если значение индексного выра­жения связи дочерней таблицы не соответствует одной из записей в родительской таблице;

- Ignore. Разрешаются любые зна­чения полей индекса, использующегося для связи в дочерней таблице. Целостность связей при этом не поддерживается.

Таким образом, при выборе правила Cascade Visual FoxPro будет выполнять корректирующее действие, а при выборе правила Restrict - блокирующее действие для поддержки целостности связи. Для исполнения этих действий при выходе из окна конструктора условий целостности данных Visual FoxPro генерирует программный код (RI code) соответствующих триггеров. Данный код включается в состав хранимых процедур и может быть просмотрен с помощью операции Edit Stored Procedures, запускаемой из системного меню или инструментальной панели Visual FoxPro. Создание триггеров отобразится также появлением их вызовов в полях триггеров конструктора таблиц.

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

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

2.5 ВВОД И ОБНОВЛЕНИЕ ИНФОРМАЦИИ В БД

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

- выборки данных из БД для их просмотра и обработки;

- редактирования записей таблиц БД для обновления информации;

- добавления записей в таблицы БД для ввода новой информации;

- удаления записей таблиц БД для стирания устаревшей информации.

Основная работа пользователей с данными БД осуществляется через приложения. В приложениях операции с данными БД реализуются с помощью интерфейсных элементов ввода-вывода (таких, как табличный элемент, поле ввода, список выбора и т.д.) и команд модификации данных (таких, как SELECT, APPEND BLANK, REPLACE, DELETE и т.д.), включаемых в программный код приложения. Вопросы разработки приложений для работы с данными БД будут рассматриваться в следующих разделах практикума.

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

Познакомимся с основными возможностями непосредственной работы с данными через интерфейс Visual FoxPro.

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

- с помощью окна Data Session, используя его кнопки Open и Browse;

- с помощью окна Project Manager, используя его кнопку Browse или соответствующий пункт его контекстного меню;

- с помощью окна конструктора БД, производя двойной щелчок на нужной таблице или выбирая пункт Browse ее контекстного меню;

- с помощью окна Command, вводя команды USE и BROWSE с необходимыми параметрами.

После выполнения любого из указанных действий открывается окно просмотра, отображающее данные выбранной таблицы, а в системном меню добавляется подменю Table и расширяется состав подменю View. В окне просмотра содержимое таблицы отображается в одной из двух форм: табличной или позаписной. Переключение вида отображения осуществляется с помощью пунктов системного меню View / Browse и View / Edit.

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

а) Изменение записей.

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

б) Добавление записей.

Добавление в таблицу пустой одиночной записи осуществляется выбором из системного меню Visual FoxPro пункта Table / Append New Record. Для ввода нескольких последовательных записей можно переключиться в режим потокового добавления выбором пункта системного меню View / Append Mode. Этот режим позволяет также вводить новые записи в условиях ограничений ссылочной целостности, не допускающих добавления пустых записей. Для завершения режима потокового добавления нужно закрыть окно просмотра.

в) Удаление записей. Удаление записей в Visual FoxPro выполняется в два этапа. На первом этапе осуществляется логическое удаление записей без их физического стирания. Для логического удаления одиночной записи из системного меню Visual FoxPro выбирается пункт Table / Toggle Deletion Mark, изменяющий пометку удаления текущей записи. Аналогичный результат можно получить щелчком мыши в столбце удаления, находящемся в левой части таблицы. Проставленная здесь пометка удаления соответствует логическому удалению записи. Для логического удаления по задаваемому условию группы записей используют пункт Table / Delete Records. Логически удаленные записи при установке SET DELETED ON не отображаются на экране и не используются при программной обработке (при установке SET DELETED OFF логическое удаление при просмотре и обработке игнорируется). На втором этапе выполняется физическое стирание записей, помеченных на удаление. Для физического удаления помеченных записей используйте пункт Table / Remove Deleted Records.

Действия по изменению данных в текущей таблице могут быть выполнены также программно путем ввода в окне Command команд REPLACE, APPEND BLANK, APPEND, INSERT, DELETE, PACK с необходимыми параметрами.

2.6 ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ ПОДГОТОВКИ

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

2.6.2 Создайте в рамках проекта новую базу данных.

2.6.3 Освойте создание таблиц и индексов.

2.6.3.1 Создайте таблицу отделов организации с полями, содержащими данные:

- название отдела;

- телефон;

- количество работников по штатному расписанию.

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

ПРИМЕЧАНИЕ: Системная проверка уникальности значений первичного индекса выполняется по всем записям таблицы, в том числе и по записям, помеченным как удаленные. Если записи с пометкой удаления мешают работе, то выполните их физическое удаление.

2.6.3.2 Создайте таблицу сотрудников отделов с полями, содержащими данные:

- табельный номер сотрудника;

- ф.и.о. сотрудника;

- название отдела;

- дата приема на работу;

- дата последней аттестации;

- прочие данные (в виде текста произвольной длины).

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

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

Запомните созданную таблицу. Откройте таблицу в режиме просмотра и с помощью пунктов системного меню Visual FoxPro заполните несколько строк (для отделов используйте названия, имеющиеся в таблице отделов). Меняя главный индекс (например, с помощью команды SET ORDER), убедитесь в правильности переключения упорядочивания данных.

2.6.4 Освойте задание ограничений целостности на уровне поля и уровне таблицы.

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

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

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

2.6.5 Освойте установление связи между таблицами

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

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

 


3 РАЗРАБОТКА ЭКРАННЫХ ФОРМ В VISUAL FOXPRO

3.1 ОБЪЕКТНАЯ ОРГАНИЗАЦИЯ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА

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

С каждой формой в Visual FoxPro связывается среда окружения, в которой можно описать часть БД, используемую в данной форме. Использование среды окружения позволяет:

- упростить связывание элементов формы с БД;

- задавать специфичные для формы свойства данных;

- изменять связи между таблицами на время работы в форме.

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

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

3.1.1 Объекты пользовательского интерфейса

Все составляющие в данных структурах рассматриваются как объекты. Для разработки интерфейса в Visual FoxPro основными являются следующие объекты (таблица 3.1).

Таблица 3.1 - Объекты пользовательского интерфейса

<





Тип объекта Описание
   
FormSet Объект - набор форм. Контейнер. Содержит объекты - формы
Form Объект - форма. Контейнер. Содержит объекты различного типа
DataEnvironment Объект - среда окружения. Контейнер. Связан с формой или набором форм. Содержит объекты курсоров и связей
Cursor Объект - курсор. Неконтейнерный элемент. Размещается в DataEnvironment. Позволяет определить или задать значения свойств таблиц и представлений, связанных с формой или набором форм
Relation Объект - связь. Неконтейнерный элемент. Размещается в DataEnvironment. Позволяет определить связи между объектами - курсорами
PageFrame Объект - блокнот. Контейнер. Содержит объекты - страницы
Page Объект - страница. Контейнер. Размещается в PageFrame. Содержит объекты различного типа
Grid Объект - таблица. Контейнер. Содержит объекты – столбцы
Продолжение таблицы 3.1
   
Column Объект - столбец. Контейнер. Размещается в Grid. Содержит объект - заголовок и один или несколько объектов для представления данных
Header Объект - заголовок столбца. Неконтейнерный элемент. Размещается в Column. Определяет вид и поведение заголовка столбца
CommandGroup Объект - набор командных кнопок. Контейнер. Содержит объекты - командные кнопки
CommandButton Объект - командная кнопка. Неконтейнерный элемент. Создает одиночную кнопку для активации определенного действия или входит в состав набора кнопок CommandGroup

Дата добавления: 2014-11-10; просмотров: 3491. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

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

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

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

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия