Пр 1. Министерство энергетики, промышленности и связи ставропольского края
Скачать 125.89 Kb.
|
Практическая работа №5Тема: «Навигация по набору данных, поиск и фильтрация данных» Цель: познакомиться и приобрести навыки работы с командами добавления записей в таблицу, просмотра содержимого таблиц и заполнения полей, удаления записей, командами выбор рабочей области, открытия таблиц и БД, функциями для получения информации о таблице, командами перемещения по таблице, поиска данных в таблице и изменения данных в записи. Задание: Изучите «Пояснения к работе». Запустите Visual FoxPro и с помощью команд откройте свою базу данных. Для того чтобы на экране появилось окно Command нажмите Ctrl+F2. Осуществите выбор рабочей области. Откройте таблицу Группа с помощью команды USE и укажите алиас для этой таблицы. Определите номер рабочей области, в которой открыта таблица Группа. С помощью команд DELETE и PACK удалите старые записи. Используя команду APPEND BLANK, заполните таблицу Группа следующими записями:
С помощью функции RECCOUNT определите число записей в таблице. Определите номер текущей записи, воспользовавшись функцией RECNO. Переместитесь в начало таблицы. Осуществите переход на 4 записи вперед. Осуществите переход на 2 записи назад. Определите номер текущей записи. С помощью команды BROWSE получите перечень групп специальности 230103. С помощью команды LOCATE определите наименование и специальность для группы с номером 2. Осуществите выбор рабочей области. Откройте таблицу Студент с помощью команды USE и укажите алиас для этой таблицы. Определите номер рабочей области, в которой открыта таблица Студент. С помощью команд DELETE и PACK удалите старые записи. Используя команду APPEND BLANK, заполните таблицу Студент следующими записями.
Определите номер текущей записи, воспользовавшись функцией RECNO. Переместитесь на последнюю запись таблицы. Осуществите переход на 5 записей назад. Осуществите переход на 3 записи вперед. Определите номер текущей записи С помощью команды REPLACE измените студенту с таб.№ 5 фамилию на «Правда». С помощью команды LOCATE найдите студентов, обучающихся в группе № 3. С помощью команды BROWSE получите список студентов, обучающихся в группе №3. С помощью функции RECCOUNT определите число записей в таблице. Сформируйте список студентов, не получающих стипендию Сформируйте список отличников. Сформируйте список студентов с именем Ольга. Оформите отчет: Тема. Цель. Командные строки и результаты их выполнения. Ход работы: В практической работе № 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? |