Файл: Министерство энергетики, промышленности и связи ставропольского края.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 17.03.2024
Просмотров: 60
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
-
Тема. -
Цель. -
Командные строки и результаты их выполнения.
Ход работы:
В практической работе № 1 мы создали таблицы нашей базы данных. Но табличные структуры создаются, чтобы хранить в них данные, просматривать, добавлять новые записи, а иногда и удалять не нужные более записи.
Прежде чем что-либо делать с таблицей, ее необходимо открыть. Каждая таблица открывается в своей рабочей области. Если вы открываете таблицу в рабочей области, где уже открыта другая таблица, первая таблица автоматически закроется. Во многих командах VFP действует правило: если в команде явно не указана таблица или рабочая область, действие производится над таблицей в текущей рабочей области.
Выбор рабочей области осуществляется с помощью команды SELECT <Номер рабочей области> | <Алиас таблицы>
<Номер рабочей области> - задает номер рабочей области, которую требуется сделать текущей. Если указан номер 0, произойдет переход в рабочую область, не занятую никакой' таблицей;
<Алиас таблицы> - указывается имя таблицы или ее алиас (присвоенный таблице псевдоним - «прозвище»).
Если требуется определить номер текущей рабочей области или рабочей области, в которой находится конкретная таблица, для этого предусмотрена функция SELECT ([0 | 11 <Алиас таблицы>] )
Если указать в качестве параметра 0 или оставить скобки пустыми, то возвратится номер текущей рабочей области.
Если указать в качестве параметра 1, то возвратится номер незанятой рабочей области с максимальным номером.
Если указать в качестве параметра алиас или имя таблицы, то возвратится номер рабочей области, в которой открыта эта таблица.
Иногда требуется определить занята рабочая область или нет и если занята, то кем. Для этого предусмотрены функции:
USED ( [ <Номер рабочей области> | <Алиас таблицы>] )
Эта функция возвращает логическое выражение TRUE (.Т.), если указанная рабочая область занята, и FALSE (.F.), если она свободна. Если не задавать параметры, проверяться будет текущая рабочая область.
ALIAS ( [ <Номер рабочей области> | <Алиас таблицы>] )
Эта функция возвращает имя таблицы или алиас таблицы, открытой в указной рабочей области. Если не задавать параметры, проверяться будет текущая рабочая область.
Открытие, Базы данных выполняется с помощью команды
OPEN DATABASE [<имябазыданных> | ?] [EXCLUSIVE | SHARED]
[NOUPDA ТЕ] [VALID АТЕ]
EXCLUSIVE - открывает БД в эксклюзивном режиме:
SHARED - открывает БД в режиме совместного использования;
NOUPDATE - открывает БД и запрещает ее редактирование;
VALIDATE - открывает БД и производит проверку наличия входящих в состав БД файлов на диске.
После открытия БД входящие в ее состав таблицы можно открывать обычным способом при помощи команды USE.
Открытие таблицы производится командой
USE [ [<база данных>] <имя таблицы> | представление SQL> | ?]
[In <рабочая область> I <Алиас табпицы>] ...
[ALIAS <Алиастаблицы>][EXCLUSIVE][SHARED] [NOUPDATE]...
Использование USE без параметров закрывает таблицу в текущей рабочей области. Добавление-записей, в таблицу. Чтобы добавить пустую запись в таблицу следует нажать комбинацию клавиш Ctrl+Y или в окне Command ввести команду APPENDBLANK
Если необходимо заполнить таблицу записями из другой таблицы, можно использовать команду APPENDFROM.
Просмотр содержимого таблиц и заполнение полей выполняется с помощью команды BROWSE [FIELDS <список полей>] ... [For <условие 1>] ...
Для изменения значения полей в записях существует команда REPLACE <имя поля> WITH <значение> [ADDITIVE]
[, <имя поля 2> WITH <значение> [ADDITIVE]] ... [диапазон]
[For <условие 1>] [While <условие 2>]
[In <номер рабочей области> I <Алиас таблицы>] [NOOPTIMIZE]
<имя поля> - имя поля, значение которого требуется изменить;
<значение> - новое значение поля;
ADDITIVE - позволяет добавлять текст в memo-поле, а не заменять его;
<условие 1> - значение полей будут изменены только в тех записях, которые удовлетворяют этому условию;
<условие 2> - значение полей будут изменяться до тех пор, пока выполняется условие.
Удаление записей Пометка записей-на удаление при работе с таблицей через BROWSE происходит при щелчке мышью в поле слева от полей записи. Второй способ пометки записей на удаление - команда DELETE, вводимая в окне Command.
DELETE [<диапазон>] [For <условие 1>] [
While <условие 2>] [NOOPTIMIZE] <диапазон> - если не используется For или While и указать АН, то будут помечены на удаление все записи;
<условие 1> - удаляются только записи, которые удовлетворяют условию;
<условие 2> - удаляются записи, пока выполняется условие;
<ра6очая область> I <Имя та6лицы> - указывается таблица или рабочая область, где производится удаление.
Если не указывать параметры, то будет помечена на удаление текущая запись таблицы в текущей рабочей области.
Снять пометку на удаление можно, выполнив обратную операцию с помощью команды RECALL [<диапазон>] [For <условие 1>] [While <условие 2>]
[In <рабочая область> I <Имя таблицы>]
Если с удалением записей решено окончательно и бесповоротно, то следует упаковать таблицу командой
PACK [memo] [DBF] [Имя таблицы] [In <рабочая область> I <Имя таблицы>]
Чтобы команда PACK успешно выполнялась, таблица должна быть открыта в эксклюзивном режиме.
Упаковка таблицы VFP производится следующим образом: все записи таблицы, кроме помеченных на удаление, копируются во временную таблицу, исходная таблица удаляется, а временной таблице присваивается имя исходной.
Закрыть открытую БД можно при помощи команды CLOSEDATABASE.
Чтобы узнать номер текущей записи, используют функцию
RECNO ( [ <Номер рабочей области> | <Алиас таблицы>])
Если не указать параметры, будет возвращена информация по таблице, открытой в текущей рабочей области.
Результаты работы подобных функций в интерактивном режиме удобнее смотреть, если они выведены в окно сообщений. Сделать это можно с помощью команды MESSAGEBOX (RECNO ())
В результате появится диалоговое окно с номером текущей записи и кнопкой ОК. Число записей в таблице можно узнать, используя функцию
RECCOUNT ( [ <Номер рабочей области> \ <Алиас таблице»] )
Если не указывать параметры функции, она возвращает число записей в таблице, открытой в текущей рабочей области.
Перемещать курсор по таблице
можно посредством команды
GO [RECORD] <Номер записи> [In <Номер рабочей области> \ In <Алиас таблице»]
GOTOP [In <Номер рабочей области> | In <Алиас таблице»] - делает текущей первую запись таблицы.
GO BOTTON [In <Номер рабочей области> \ In <Алиас таблице»] - делает текущей последнюю запись таблицы.
Перемещаться относительно текущей записи можно, если воспользоваться командой SKIP [<число>] [In <Номер рабочей области> \ In <Апиас таблице»]
<число> - указывает на количество записей, на которое надо перескочить от текущей записи. Число может быть как положительным, так и отрицательным (переход назад).
Если указать команду SKIP без параметров, произойдет переход на одну запись вперед. Команды поиска, записей. Основные команды поиска записей - LOCATE, CONTINUE, SEEK. Первая и вторая работают с таблицами независимо от того, проиндексирована таблица или нет. Команда SEEK осуществляет поиск только в проиндексированных таблицах.
Команда LOCATE ищет запись, соответствующую условиям поиска, и делает ее текущей. Продолжить поиск после нахождения первой записи, удовлетворяющей условиям поиска, можно посредством команды CONTINUE. Поиск в этом случае будет продолжен с записи, следующей за текущей.
LOCATE [For <условие 1>] [<диапазон>] [While <условие 2>] [NOOPTIMIZE]
<условие 1> - ищется первая запись, удовлетворяющая этому условию; диапазон - задает диапазон поиска и может принимать значения:
ALL - все записи;
Record «номер записи> - поиск в конкретной записи;
Next <количество> - указанное количество следующих за текущей записей;
Rest - поиск, начиная с текущей записи и до конца таблицы.
<условие 2> - задает выражение, при истинности которого продолжается поиск;
NOOPTIMIZE - отключает использование оптимизации.
Команда SEEK ищет запись, соответствующую условиям поиска, и делает ее текущей. Поиск с помощью этой команды осуществляется только по полям или выражениям над полями, по которым производилось индексирование.
SEEK <Ключевое выражение> [ORDER <номера индекса> \ <имя
idx-файла> \[Tag] <Имя тега> [OF <имя cdx-файла>] [Ascending | Descending]
[In <Номер рабочей области> \ In <Алиас таблицы>]
<Ключевое выражение> - выражение для поиска записи, соответствующее ключевому выражению, использованному при индексировании;
<номера индекса> | <имя idx-файла> - определяет номер или имя индексного idx-файла, в соответствии с индексами которого производится поиск;
<Имя тега> - имя тега в cdx-файле, в соответствии с индексами которого производится поиск;
Ascending- поиск в таблице будет производиться по возрастанию индексов;
Descending- поиск в таблице будет производиться по убыванию индексов.
Определить, найдена ли запись командами LOCATE, CONTINUE или SEEK, можно если после их выполнения оценить значение, возвращаемое функцией
FOUND ([ <Номер рабочей области> | <Алиас таблицы>] )
Если эта функция возвращает логическое выражение TRUE (.Т.), значит поиск увенчался успехом, если вернула значение FALSE (.F.) - искомое значение не найдено.
Контрольные вопросы:
-
Расскажите о способах добавления записей в таблицу. -
С помощью какой команды можно выполнить просмотр содержимого таблиц и заполнение полей? -
Расскажите о способах и технологии удаления записей из таблицы. -
Что понимают под рабочей областью и как осуществить выбор рабочей области? -
Что означает команда «SELECT 0»?
-
Что означает строка «? SELECT ()»? -
Что означает строка «USE Persons ALIAS Pers»? -
Как узнать номер текущей записи? -
Как узнать количество записей в таблице? -
Расскажите о командах перемещения по таблице. -
На какую строку произойдет переход указателя, если текущая запись имеет номер 5, и набрать команду SKIP -4? -
Как найти запись в таблице о студенте с табельным номером 7? -
С помощью какой команды можно изменить значения полей, например оценку и размер стипендии в таблице Студент для заданного студента (Усов Марат Валерьевич)? -
Что означает запись CLOSE TABLES? -
Как и посредством какой команды выполняется упаковка таблицы? -
Что такое Алиас таблицы? -
Что означают команды GO? GO TOP? GO BOTTOM?