ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Базы данных
Добавлен: 28.11.2018
Просмотров: 3108
Скачиваний: 9
36
Рис. 4.25
Для начала в разделе LIST POPUP введем пункты будущего POPUP
меню. Затем, по аналогии с тригерными кнопками, в разделе <CHOICE...>
зададим переменную, в которую будет записан номер выбранного пункта.
С помощью пункта VALID можно задать процедуру обработки выбора. В
разделе INITIAL зададим стартовое значение меню.
4.3.5 Завершающие манипуляции.
В завершении формирования экрана используйте пункт меню
SCREEN/SCREEN LAYOUT и в появившемся окне (см. рис. 4.26) выбе-
рите нужные параметры экрана.
Установите, будет ли сформированный экран окном (выберите кноп-
ку WINDOW) либо просто экраном (кнопка DESKTOP).
При выборе типа WINDOW задайте имя (NAME), размер (SIZE), за-
головок (TITLE) и нижнюю надпись (FOOTER) окна. С помощью пункта
SCREEN CODE можно задать команды, которые будут выполнены перед
(пункт SETUP) и после (пункт CLEANUP & PROCS) предьявления сге-
нерированного экрана. Это могут быть команды очистки экрана, инициа-
лизации баз данных, индексов, а также команды настроек среды.
В разделе ENVERONMENT предусмотрена возможность сохране-
ния настроек среды.
В результате проделанной работы должен получиться файл с расши-
рением SCX, в котором хранится образ экрана, а также файл SCT, в кото-
ром хранится состояние среды, открытие баз данных и индексов и т.п.
Из полученного экрана можно сделать SPR-файл, содержащий про-
грамму на FoxPro, в результате выполнения которой на экране появится соз-
данное окно. Для этого в меню PROGRAM выберите пункт GENERATE.
37
Рис. 4.26
Задание
на
лабораторную
работу
№
3
1.
С помощью генератора экранов разработать две формы.
2.
Основная форма должна быть создана для родительской таблицы,
обеспечивать перемещение, ввод записей и вызов дочерней формы
посредством кнопок.
3.
Дочерняя форма должна в табличном виде отображать все записи
дочерней таблицы, соответствующие текущей записи родительской.
4.
В отчете описать ход создания форм и продемонстрировать их рабо-
тоспособность.
5.
На проверку выслать файлы шаблонов scx, файл .spr, файлы БД и
индексные.
4.4
Лабораторная
работа
№
4.
Одновременная
работа
с
несколькими
файлами
данных
Реальные базы данных, как правило, состоят из нескольких файлов
данных. Часто информацию, хранящуюся в разных файлах, необходимо
обрабатывать одновременно. СУБД FoxPro позволяет своими средствами
проделывать операции, позволяющие устанавливать связь между базами и
объединять все данные в одну задачу. Особое внимание надо обратить на
следующие операции:
–
SET RELATION
38
–
SET VIEW
–
JOIN WITH и др.
Прежде чем познакомиться с работой этих команд, необходимо уяс-
нить, что для работы с несколькими файлами данных они должны быть ак-
тивированы и помещены в отдельной РАБОЧЕЙ ОБЛАСТИ. Всего рабо-
чих областей может быть 10, и один файл может быть открыт не более чем
в одной области.
Выбор/(смена) рабочей области выполняется командой SELECT.
Рабочие области можно указывать цифрами 1—10, буквами A—J,
именем открытого файла данных либо присваивать рабочей области псев-
доним ALIAS-имя. Присвоение рабочей области ALIAS-имени произво-
дится при открытии файла командой USE, например:
SELECT 2 && выбрать рабочую область 2;
USE spisok INDEX name,group ALIAS f2 && открыть файл в
рабочей области 2 и
присвоить ей псевдоним f2
После присвоения файлу данных «псевдонима» (alias) обращение к
файлу может происходить по этому имени. Если же в команде USE опе-
ранд ALIAS не указывается, то псевдонимом становится само имя базы
данных без расширения .dbf.
В каждый момент времени активной может быть одна рабочая об-
ласть.
При переходе из одной рабочей области в другую (командой
SELECT) все файлы в них остаются открытыми. Для файлов данных в ка-
ждой рабочей области устанавливается независимый «указатель» текущей
записи, а при смене активной рабочей области все «указатели» сохраняют
свои значения.
4.4.1
Команда
манипулирования
данными
SET RELATION
Общий формат команды,устанавливающией связь (RELATION) ме-
жду базами:
SET RELATION TO [<выражение> INTO<имя базы>],
где <выражение> — это либо строковое выражение, которое задает зна-
чение ключа для поиска в «сыновьей» базе, либо цифровое выражение, ко-
торое задает номер записи в «сыновьей» базе. В качестве ключа может ис-
пользоваться имя поля, по которому осуществляется связь. Понятие
«связь» механически можно интерпретировать как «склеивание» по кон-
кретному полю двух и более файлов данных;
<имя> — альтернативное имя сыновьей базы, открытой в другом
разделе (другой рабочей области).
39
Можно указать системе, что при изменении значения указателя запи-
си в текущей базе нужно также изменять указатель записи в базе данных,
указаной в операнде INTO. Правило для получения нового значения указа-
теля задано в операнде TO в виде выражения.
Простейшей связью между базами может быть синхронное движение
указателя в обеих базах. Для этого достаточно использовать функцию
RECNO().
SET RELATION TO RECNO () INTO [<имя базы>]
Hапример,
SET RELATION TO RECNO() INTO Spisok
указывает системе, что при изменении значения указателя в текущей базе
данных, нужно также изменять указатели записи в базе данных, указанной
в операнде INTO
Такой прием возможен лишь для случая, когда количество записей в
базах данных одинаково.
Как видно, в приведенной команде отсутствует ссылка [<выраже-
ние>], так как «склеивание « баз происходит последовательно запись за за-
писью.
В общем случае, когда количество записей в базах не обязательно
совпадает, «склеивание» баз происходит по общему полю, имя которого и
указывается в выражении.
Hапример, вы имеете две базы данных SPISOK и GRUPA, которые
содержат общее поле фамилии студентов NAME. Поэтому лучше, чтобы
при переходе в базе SPISOK от одной фамилии к другой в базе GRUPA
осуществлялся поиск записи, имеющей такое же содержание поля NAME.
В этом случае мы говорим, что связь между базами осуществляется по по-
лю NAME.
Система требует, чтобы «сыновняя» /т. е. активизированная не по-
следней/, база данных была индексирована по этому полю. Значит для по-
лучения правильного результата соединения баз надо написать:
SELECT 1
USE Grupa INDEX Name
SELECT 2
USE Spisok
SET RELATION TO Name INTO Grupa
DISPLAY ALL FIELDS Nam, Fam,Grupa.Vozrast,Grupa.Group,
Как видите, для доступа к полям записей другой (неактивной) рабо-
чей области / в команде DISPLAY / перед именем поля следует указывать
имя файла и имя поля(Grupa.Vozrast) или, если рабочие области вместо чи-
слового обозначения (1..10) имеют символьные алиасы (a..z), то можно
доступ указать <имя рабочей области>.<имя поля> (a.Vozrast).
40
Команда SET RELATION позволяет установить взаимосвязь между
несколькими базами и просмотреть интересующие поля, которые указы-
ваются в команде DISPLAY.
В нашем примере поле Name просматривается из файла Spisok, а
Vozrast и Group из файла Grupa,обращение к которому происходит c по-
мощью указания номера рабочей области, в которой он активизирован.
Hо команда RELATION создает временный экран, и не запоминает
связанные данные как новый файл данных. (Можно, конечно, запомнить
эти данные, если приведенные команды «склеивания» баз отработать как
программный файл).
4.4.2
Команда
слияния
файлов
JOIN WITH
Это более сложная команда манипулирования данными, она дает
возможность создавать новую базу данных, которая является соединением
двух имеющихся баз или их частей, т. е. она осуществляет слияние «по го-
ризонтали».
JOIN WITH <альтернативное имя/ область> TO<имя нового файла>
FOR<условие>[FIELDS<список полей>]
C ее помощью можно объединить путем слияния две открытые базы
данных из разных рабочих областей. При этом одна из них является актив-
ной, а альтернативное имя другой указывается в операнде WITH .
Если список полей не задан, то вначале будут включены все поля
первой базы, за исключением memo-полей, которые нельзя использовать
при слиянии, а затем все поля другой.
Условие FOR используется для того, чтобы при слиянии можно было
варьировать условием включения записей.
Порядок работы этой команды такой:
1. Выбирается запись из активной базы данных. За ней включаются
все записи, которые удовлетворяют условию FOR из альтернативной базы
данных.
2. После этого извлекается следующая запись из активной базы дан-
ных и процесс повторяется.
Таким образом, после операнда FOR указывается так называемое по-
ле подбора.
Пример программы:
Пусть требуется из файлов KADR.DBF и BRIG1.DBF создать третий
файл, который будет содержать поля FAM (фамилия) и TAB (табель) из
файла KADR.DBF и поле VIR (выработка) из BRIGI.DBF. Новый файл на-
зван KADRVIR.DBF.
SELECT a
USE KADR.DBF