Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_bilety_praktika.doc
Скачиваний:
5
Добавлен:
20.03.2015
Размер:
238.59 Кб
Скачать

1. Определение отношений между таблицами

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

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

  1. Выбрать родительскую таблицу.

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

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

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

5. Для изменения отношения между таблицами нужно установить курсор мыши на линию, соединяющую таблицы, и дважды нажать курсор мыши. На экране откроется окно диалога «Edit Relationship», в котором слева приведены наименование и раскрывающийся список индексов родительской таблицы, а справа аналогичная информация о дочерней таблицы. В этом же окне диалога приведен тип отношений между таблицами.

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

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

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

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

Для определения условия целостности данных в окне конструктора базы данных следует выбрать команду контекстного меню Referential Integrity или нажать соответствующую ей кнопку панели инструментов «Database Designer». В результате откроется окно конструктора условий целостности данных «Referential Integrity Builder», которое содержит перечень всех установленных отношений между таблицами. Таблица описания условий содержит наименования родительской и дочерней таблиц, наименования индексов, используемых для связи, а также типы действий, выполняемых при модификации данных, добавлении и удалении записей.

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

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

Наимен.

Описание

Cascade

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

Restrict

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

Ignore

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

Размещение списка.

В Visual FoxPro существует несколько вариантов отображение одного того же поля на экране. Например, в предыдущем примере поле cTypePay можно было отобразить как в виде переключателя, так и в виде объекта типа ListBox (списка). Выбор типа объекта определяется пожеланиями пользователя и наличием свободного места в форме.

Тип источника данных определяется свойством RowSourceType.

Допустимые значения свойства RowSourceType

Значение

Источник данных

0(None)

Значение элементов списка определяются программно, используя методы AddItem или AddListItem

1(Value)

Список задается в виде строки, элементы в которой разделяются запятыми

2(Alias)

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

3(SQL Statement)

Список содержит данные, полученные в результате выполнения SQL оператора

4(Query)

Список содержит данные, полученные в результате выполнения указанного запроса. Запрос задается именем файла с расширением .QPR

5(array)

Источником данных является заданный массив

6(Fields)

Значения элементов списка определяются полями таблицы

7(Files)

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

8(Structure)

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

9(Popup)

Список содержит пункты всплывающего меню

Свойства и методы объектов типа List Box

Свойства и методы

Назначение

Click

Определяет действие объекта после нажатия на него мышью

ColumnCount

Содержит число столбцов в списке

ColumnWidths

Определяет ширину столбцов

ControlSource

Устанавливает источник данных, с которым связан объект

FirstElement

Задает первый элемент массива, который будет отображаться в списке. Данное свойство доступно только в том случае, если свойство RowSource задано в качестве источника данных массив (RowSource=5)

DblClick

Определяет действие объекта после двойного нажатия на него мышью

IncrementalSearch

Определяет, позволяет ли объект последовательный поиск

KeyPress

Определяет действие объекта после нажатия клавиши

MultiSelect

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

NumberOfElement

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

RowSource

Указывает источник данных списка

Размещение раскрывающегося списка.

Рассмотрим еще один тип объектов, предназначенных для отображения на экране элементов списка – объект типа Combo Box или раскрывающийся список. Объект данного типа аналогичен объекту List Box, но в отличие от последнего, не занимает много места в форме.

Размещение счетчика.

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

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

  1. Выберите инструмент Spinner на панели инструментов «Form Controls».

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

  3. Свойства SpinnerHighValue, Spinner LowValue объекта определяют соответственно максимальное и минимальное значения, которые можно установить при помощи кнопок изменения значения. Свойства KeyboardHighValue, KeyLowValue определяют соответственно максимальное и минимальное значения, которые можно ввести в поле с клавиатуры. При выходе за установленные границы на экран будет выводиться сообщение о допустимых пределах вводимого числа. Шаг, с которым будет изменяться значение поля, задается свойством Increment.

  4. В случае необходимости скорректируйте другие свойства (например, ForeColor, BackColor, FontName, определяющие цвет, фон, шрифт).

Кнопки панели инструментов «Form Designer»

Set Tab Order – Переключает конструктор форм в режим установки порядка обхода объектов формы

Data Environment – Открывает окно определения среды окружения

Properties WindowВызывает на экран окно свойств

Code WindowОткрывает окно просмотра исходного кода формы

Form ControlsВызывает на экран панель инструментов «Form Controls»

ToolbarColor Palette Вызывает на экран панель инструментов «Color Palette»

Toolbar LayoutВызывает на экран панель инструментов «Layout»

Form Builder Вызывает построитель экрана

Auto Format Вызывает построитель автоформата для выбранных объектов формы

Панель инструментов «Form Controls» конструктора форм

Select Objects –Указатель выделения

View Classes – Выбирает класс для создания объектов в форме

Label Текстовый объект

Text Box – Поле ввода

Edit Box – Поле редактирования

Command Button – Кнопка

Command Group –Группа кнопок

Option Group – Переключатель

Check Box – Флажок

Combo Box – Поле ввода со списком

List Box – Список

Spinner – Поле ввода значения

Grid – Таблица

Image – Рисунок

Timer – Таймер

Page Frame – Страница

OLE ContainerСоздает OLE-объект

Control OLE Bound Control – Отображает содержимое OLE-объекта, хранящегося в поле типа General

Line – Линия

Shape – Контур

Container Контейнер

Separator – Создает разделитель –объект, формирующий проме-жутки между элементами управ-ления на панели инструментов

Builder lock – Закрепляет выбор построителя

Button Lock – Закрепляет выбранную кнопку на панели инструментов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]