Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_vfp.docx
Скачиваний:
3
Добавлен:
24.04.2019
Размер:
50.8 Кб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • После завершения определения в диалоговом окне Referential Integrity Builder (Построитель целостности данных) условий целостности данных вся введенная информация сохраняется в базе данных.

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

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

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

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

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

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

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

  • 7. Для сохранения выполненных действий нажмите кнопку ОК.

Вопрос 9. Команды языка FoxPro могут быть исполнены по одной непосредственно из командного окна Command. Для этого нужно набрать текст команды в окне Command и нажать клавишу Enter. С помощью клавиш управления курсором можно установить курсор на любую из ранее выполненных команд и запустить ее снова. Окно Command позволяет выполнять все стандартные (типовые) операции редактирования.

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

Программа набирается и модифицируется в окне редактирования.

Доступ к окну может осуществляться двумя способами:

1. File → Open… → Type → Program → выбрать сам целевой файл из списка.

2. Набрать команду MODIFY COMMAND <имя файла> в окне и нажать клавишу Enter.

Для запуска программы можно использовать стандартные средства меню или набрать в окне Command команду DO <имя программы>.

Язык Visual FoxPro обеспечивает возможности как структурного, так и объектно-ориентированного программирования. Рассмотрим возможности структурного программирования.

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

Предложение, начинающееся символом «*» в первой позиции строки, является комментарием и игнорируется при выполнении программы.

Возможен построчный комментарий, который записывается в той же строке, что и предложение программы, но отделяется от него двумя символами амперсанда «&&».

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

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

Второй является Main Section – секция, выполняющая основную работу программы. Обычно это команды управления программой и/или команды обработки данных.

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

Вопрос 10. Различают глобальные (общие) и локальные переменные и массивы. Глобальные переменные памяти и массивы доступны для чтения или изменения из любой программы, выполняемой в текущем сеансе работы с Visual FoxPro. Синтаксис соответствующей команды следующий:

PUBLIC <memvar list>

PUBLIC [ARRAY] <array1> (<expN1> [,<expN2>])

[,<array2> (<expN3> [,<expN4>])… ]

Все переменные памяти и массивы, созданные в командном окне Command, автоматически становятся глобальными.

В Visual FoxPro процессы объявления и инициализации переменной (присвоения ей начального значения) совмещаются в одном операторе присваивания, который имеет два варианта представления: «=» и STORE TO. Полный синтаксис второй команды можно представить: STORE <expr> TO <memvar list> | <array> | <memvar>

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

PRIVATE <memvar list> | <array list>

PRIVATE ALL [LIKE <scel> | EXCEPT <scel>]

Здесь операнд ALL означает ВСЕ, то есть все переменные и массивы объявляются локальными; операнд ALL LIKE <scel> позволяет объявить локальными те переменные и массивы, имена которых удовлетворяют шаблону; операнд ALL EXCEPT <scel> делает то же, но только для тех переменных и массивов, имена которых не удовлетворяют шаблону. Если о переменной не сообщается, что она является глобальной (в специальном операторе PUBLIC), то она считается локальной. Локальная переменная, объявленная в начале основной программы, действует как глобальная для всех внутренних подпрограмм. Этим свойством можно пользоваться, чтобы не прибегать к оператору PUBLIC. Отображение текущих значений переменных и массивов реализуют команды LIST и DISPLAY:

LIST | DISPLAY MEMORY [LIKE <scel>][TO PRINTER | TO FILE <file>]

[NOCONSOLE]

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

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

Опция TO PRINTER направляет вывод на печатающее устройство, а опция TO FILE <file> – в текстовый файл.

Опция NOCONSOLE подавляет вывод на экран или в активное окно.

Вопрос 11. Массив <array> нужно заранее описать с помощью команд DECLARE или DIMENSION, имеющих одинаковые синтаксис и действие:

DECLARE | DIMENSION <array1> (<expN1>[,<expN2>])

[,<array2> (<expN3>[,<expN4>])… ]

Команды позволяют создавать одномерные или двумерные массивы переменных памяти. Считается, что имеет одну колонку и <expN1> строк. Двумерный массив имеет <expN1> строк и <expN2> колонок. Размерности массива можно записывать как в круглых, так и в квадратных скобках.

Элементы массива могут быть данными любого типа. При создании элементы инициализируются логическими значениями «ложь» (.F.).

Можно изменить размерность массива, повторно используя команду DIMENSION.

Синтаксис команды удаления из памяти переменных и массивов:

RELEASE <memvar list> | <array list>

RELEAS ALL [LIKE <scel> | EXCEPT <scel>]

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

Команда CLEAR MEMORY освобождает все переменные и массивы, как локальные, так и глобальные, от присвоенных им значений. Опция TO <file> обеспечивает сохранение в файле с указанным именем. По умолчанию, для таких файлов переменных памяти принято расширение .mem имени файла.

Опция TO MEMO <memo field> обеспечивает сохранение в указанном поле примечаний типа memo (в поле памяти).

Восстановление переменных и массивов реализует команда:

RESTORE FROM <file> | FROM MEMO <memo field> [ADDITIVE]

Команда GATHER перемещения содержимого переменных памяти или элементов массива в поля текущей записи активной таблицы базы данных имеет синтаксис:

GATHER FROM <array> | MEMVAR [FIELDS <field list>] [MEMO]

В команде COPY TO ARRAY для копирования одной записи следует использовать одномерный массив, а для копирования нескольких записей – двумерный массив.

Будем различать главную процедуру (или головную программу) и вызываемые ей процедуры.

Синтаксис начала подпрограмм и функций соответственно следующий:

PROCEDURE <procedure name>

FUNCTION <function name>

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

Синтаксис команды, заканчивающей выполнение UDF:

RETURN [<expr> | TO MASTER | TO <program name>]

Здесь <expr> – возвращаемое в вызывающую процедуру значение. Команда RETURN без аргументов возвращает управление вызывающей программе.

Опция TO MASTER передает управление на самый верхний уровень в иерархии вызывающих программ. Опция TO <program name> возвращает управление указанной программе. Оператор RETURN не является обязательным, так как неявная команда RETURN автоматически выполняется за последним оператором любого программного файла; кроме того, очередная следующая команда FUNCTION или PROCEDURE сигнализирует о конце предыдущей.

Данные передаются в UDF в форме параметров. Параметры определяются командой PARAMETERS <parameter list> которая должна быть следующей после команды начала UDF.

Такую загрузку выполняет команда открытия процедурного файла: SET PROCEDURE TO [<procedure file>]

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