Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_по_БД.doc
Скачиваний:
28
Добавлен:
14.02.2015
Размер:
897.54 Кб
Скачать

2.12 Добавление записей из других таблиц

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

SELECT EMPLOYEE

SCAN

SCATTER MEMVAR

SELECT EMPL9

APPEND BLANK

GATHER MEMVAR

SELECT EMPLOYEE

ENDSCAN

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

SELECT EMPLOYEE

SCAN

SCATTER TO EMPLOYEE

SELECT EMPL9

APPEND BLANK

GATHER FROM EMPLOYEE

SELECT EMPLOYEE

ENDSCAN

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

APPEND FROM Добавляет записи в текущую таблицу из другого файла.

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

SELECT PRODHITS

APPEND FROM CURPROD

Если из таблицы CURPROD требуется добавить только те записи, у которых значение поля lInProduction равно .F., используйте следующие строки программы:

SELECT PRODHITS

APPEND FROM CURPROD FOR NOT lInProduction

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

Глава 3. Организация поиска информации в базе данных

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

3.1 Последовательный поиск

В программе возможна организация удобного для пользователя поиска данных в базе. Команда LOCATE осуществляет последовательный поиск одной самой первой записи в базе данных, удовлетворяющей заданному FOR-условию среди записей, находящихся в заданных границах, и до тех пор пока соблюдается WHILE-условие.

LOCATE [<границы>] [FOR <выражение>] [WHILE <выражение>]

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

ALL – поиск по всем записям базы;

NEXT N - поиск по следующим указанным записям номеров до N;

RECORD N - поиск указанного номера записи;

REST - поиск, начиная с текущей, и до последней записи;

FOR и WHILE – устанавливает условие поиска, например, поиск с указанным именем поля;

Команда продолжения поиска записей, начатого ранее командой LOCATE:

CONTINUE

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

Для поиска всех записей по заданным условиям команду CONTINUE нужно поместить в цикл. Если командой LOCATE или CONTINUE не было найдено нужных записей, указатель записи устанавливается на конец файла.

При успешном поиске, когда указатель устанавливается на найденную запись, можно определить номер этой записи с помощью функции RЕСNO(), Функция FOUND(), оценивающая результат поиска, принимает значения «Истина» (.true.).

ПРИМЕР. Поиск по указанному значению поля KOMU.

LOCATE FOR KOMU ="ALPHA"

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