ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Базы данных
Добавлен: 28.11.2018
Просмотров: 2680
Скачиваний: 8
11
нем
имеются
данные
.
Чтобы
войти
в
мемо
-
поле
,
необходимо
переместить
в
него
курсор
и
нажать
Ctrl-Home
или
Ctrl-
PgDn/PgUp,
или
дважды
кнопку
мыши
.
По
умолчанию
окно
редактирования
может
быть
видно
не
целиком
.
Раскрывается
окно
во
весь
экран
нажатием
клавиш
Ctrl-F 10.
Повторное
нажатие
клавиш
возвращает
окно
к
исход
-
ной
форме
.
KADR
Fam Dtr
Tab
Pol
Sem
Det
Pdr
Szar
Per
Сидоро
П
.
С
.
Потапов
Д
.
П
.
Кулакова
М
.
И
.
Попов
А
.
А
.
Романова
М
.
С
.
Миронов
Р
.
И
.
Яковлев
А
.
И
.
12.10.56
04.09.60
15.04.49
25.03.46
09.10.66
09.09.70
10.12.30
13
98
6
234
890
460
54
M
M
Ж
М
Ж
М
М
Х
Б
Б
Р
Х
Х
Б
1
3
2
2
ОГМ
ОГМ
ОГМ
ХБ
ОХ
ОГМ
ВОХР
635000
268000
290000
550000
395000
542000
418000
memo
Memo
memo
Memo
Memo
memo
memo
Рис
1.5
BROWSE-
окно
Команда
BROWSE -
один
из
наиболее
мощных
и
удобных
инструментов
доступа
пользователя
к
данным
в
FoxPro.
По
су
-
ществу
это
не
просто
команда
-
это
целая
среда
доступа
и
управления
данными
.
Допускается
создавать
так
называемые
вычисляемые
поля
.
Эти
поля
фактически
не
являются
полями
базы
данных
,
но
могут
быть
их
функциями
и
отображаются
на
экране
наравне
с
настоящими
полями
,
что
дает
возможность
пользователю
,
например
,
оценивать
свои
данные
по
заданному
критерию
.
Такой
режим
соответствует
работе
с
электронной
таблицей
.
Формат
команды
(
основные
опции
перечислены
по
алфа
-
виту
):
•
BROWSE [FIELDS <
поля
>] [F
ОР
<
условие
1] [LAST]
[NOAPPEND] [NOEDIT/NOMODIFY] [TITLE <
вырС
2>]
Управление
доступом
к
полям
базы
FIELDS <
список
полей
> -
перечень
предъявляемых
полей
.
По
умолчанию
отображаются
все
поля
базы
данных
.
Имя
каждо
-
го
поля
может
сопровождаться
ключами
,
определяющими
режим
доступа
к
нему
:
В
<
список
полей
>
могут
включаться
вычисляемые
поля
.
Эти
поля
являются
функциями
других
полей
,
переменных
и
т
.
д
.
12
Такие
поля
не
могут
редактироваться
и
не
запоминаются
в
базе
данных
.
Вычисляемые
поля
сами
могут
содержать
пользова
-
тельские
функции
,
что
делает
их
важным
средством
отображе
-
ния
и
управления
данными
.
Например
,
в
команде
BROWSE
для
базы
KADR.DBF
введем
вычисляемое
поле
РОМ
для
определе
-
ния
материальной
помощи
.
Считаем
,
что
помощь
устанавлива
-
ется
на
одного
ребенка
в
размере
70%
средней
зарплаты
,
но
не
более
90000
руб
.
и
только
тем
,
у
кого
средняя
зарплата
не
пре
-
вышает
300000
руб
.
Таким
образом
POM=IIF(szar>300000, 0,
MIN(0.7*szar*det, 90000)).
Здесь
,
забегая
вперед
,
мы
использовали
две
новые
функ
-
ции
: MIN()
и
IF().
Функция
MIN()
возвращает
минимальное
зна
-
чение
из
0.7*szar*det
и
90000.
Функция
IF()
возвращает
0,
если
szar>300000,
или
MIN(...)
в
противном
случае
.
Подробнее
эти
функции
разбираются
в
гл
. 16.
Видимый
размер
вычисляемого
поля
РОМ
будет
опреде
-
ляться
принятыми
умолчаниями
на
размер
числовых
выводов
.
Этим
процессом
можно
(
и
лучше
)
управлять
с
помощью
пара
-
метра
ограничения
длины
поля
:<
выр
N>.
Еще
удобнее
примене
-
ние
шаблонов
(
ключ
:
Р
),
которыми
может
быть
установлена
не
только
длина
,
но
и
формат
выдачи
.
FOR <
условие
1> -
устанавливает
фильтр
записей
для
ба
-
зы
.
В
BROWSE-
окне
предъявляются
только
записи
,
удовлетво
-
ряющие
заданному
<
условию
>.
Пример
:
USE kadr
BROWSE FOR szar>=530000.AND.szar<=750000
Здесь
команда
BROWSE
предъявляет
только
те
записи
базы
KADR.DBF,
в
которых
значения
поля
SZAR (
средняя
зар
-
плата
)
от
530000
до
750 000
руб
.
LAST-
конфигурация
окна
сохраняется
в
системном
файле
для
использования
в
следующем
сеансе
работы
.
NOAPPEND –
дополнение
базы
данных
с
помощью
кла
-
виш
Ctrl-N
невозможно
.
NOEDIT/NOMODIFY –
редактирование
невозможно
,
раз
-
решена
пометка
к
удалению
.
TITLE <
вырС
2>] –
задает
заголовок
окна
.
Пример
.
Настроим
окно
редактирования
таким
образом
,
чтобы
оно
имело
собственные
заголовки
колонок
FAM, DTR,
POL, DET, SEM, SZAR,
заголовок
окна
-
КАДРЫ
,
указания
на
13
возможные
действия
в
окне
(Ctrl-T, Ctrl-N, Ctrl-W),
ограничение
на
верхнюю
границу
средней
зарплаты
в
9000000
руб
.
и
вычис
-
ляемое
поле
РОМ
(
Помощь
).
USE kadr
SET DATE GERMAN
BROWSE ;
TITLE ‘^T-
удал
., ^N-
доп
.
КАДРЫ
^W-
выход
’;
FIELDS fam
:
Н
='
Фамилия
' :12, ;
dtr
:
Н
='
Родился
', ;
pol
:
Н
='
Пол
', ;
det
:
Н
='
Детей
', ;
sem
:
Н
='
Сем
.
пол
.', ;
szar :
Н
='
Ср
.
эар
.' :
В
=,9000000 , ;
pom=IIF(szar>300000,0,MIN(0.7*azar*det, 90000)), ;
:
Н
='
Помощь
' :
Р
='# # # # #' LEDIT
Поскольку
из
-
за
заголовков
колонок
ширина
большинства
полей
увеличилась
,
видимая
часть
поля
FAM
здесь
уменьшена
до
12
колонок
с
возможностью
прокрутки
этого
поля
с
помощью
клавиш
управления
курсором
.
Кроме
того
,
для
вычисляемого
поля
РОМ
принят
шаблон
«# # # # #» (
пять
разрядов
целых
).
Иначе
результат
в
этом
поле
будет
отображаться
разрядностью
по
умолчанию
.
Вид
нашего
BROWSE-
окна
приведен
на
рис
.1.6.
^T-
удал
., ^N-
доп
.
КАДРЫ
^W-
выход
’
Фамилия
Родился
Пол
Детей
Сем
.
пол
.
Ср
.
зар
.
Помощь
Сидоро
П
.
С
.
Потапов
Д
.
П
.
12.10.56
04.09.60
М
М
1
3
Х
Б
635000
268000
0
90000
Рис
1.6
Замечание
к
нотации
примеров
.
Все
тексты
примеров
изображаются
так
,
как
будто
они
являются
фрагментами
про
-
грамм
,
и
при
этом
длинные
команды
разбиваются
на
части
при
-
емлемого
размера
с
помощью
знака
«:».
Поскольку
еще
не
рас
-
сматривались
средства
создания
и
исполнения
командных
фай
-
лов
,
эти
команды
следует
вводить
в
командном
окне
,
можно
в
одну
строку
,
опуская
«;».
Кроме
того
,
не
следует
повторно
вво
-
дить
команды
,
если
нужный
результат
уже
ранее
достигнут
.
Так
,
нет
необходимости
снова
открывать
файл
базы
данных
,
если
он
уже
открыт
.
Убедиться
в
этом
можно
,
например
,
по
виду
статус
-
строки
.
14
CHANGE /ADIT-o
кно
По
функциям
и
возможностям
команда
CHANGE
анало
-
гична
команде
BROWSE,
но
предъявляет
все
поля
всех
записей
в
одну
колонку
.
•
CHANGE [WHILE <
условие
>][
опции
]
Опции
-
набор
режимов
по
составу
и
действию
полностью
аналогичных
опциям
команды
BROWSE (
отсутствуют
только
оп
-
ции
NOLGRID/NORGRID).
Пример
.
Выдать
на
редактирование
поля
FAM (
Фамилия
)
И
SEM (
Семейное
положение
)
всех
записей
файла
K.ADR.DBF,
для
которых
значение
поля
DET>1 (
детей
больше
одного
).
USE kadr
CHANGE FIELDS fam,sem FOR det>1
Перемещения
в
базе
данных
При
работе
с
базой
данных
необходимы
средства
пере
-
мещения
внутри
нее
.
Запись
,
на
которой
находится
указатель
записей
,
является
текущей
,
и
только
к
ней
в
данный
момент
возможен
непосредственный
доступ
.
Имеется
несколько
разновидностей
команд
,
изменяющих
положение
указателя
записей
:
•
GO
TOP
[IN
<
область
>] -
переход
к
самой
первой
записи
файла
;
•
GO BOTTOM [IN <
область
>} -
переход
к
самой
последней
записи
;
•
GO
<
выр
N> [IN <
область
>] -
переход
к
записи
с
указанным
в
<
выр
N>
номером
;
•
SKIP
<
выр
N> [IN <
область
>] -
переход
к
записи
,
отстоящей
от
текущей
на
указанное
в
<
выр
N>
число
записей
.
В
последней
команде
<
выр
N>
может
быть
и
отрицатель
-
ным
,
что
означает
движение
указателя
назад
. SKIP
без
пара
-
метра
идентичен
SKIP 1 (
переход
на
следующую
запись
).
Пара
-
метр
IN <
область
>
указывает
над
базой
из
какой
рабочей
облас
-
ти
должна
выполниться
команда
.
Если
он
опущен
,
имеется
в
виду
текущая
рабочая
область
.
Для
контроля
положения
указателя
и
наличия
записей
в
файле
предусмотрены
функции
:
RECNO([<
область
>]) -
указывает
номер
текущей
записи
;
15
RECCOUNT([<
область
>]) -
выдает
общее
число
записей
в
файле
базы
данных
,
включая
записи
,
помеченные
к
удалению
;
ЕО
F([<
область
>) -
функция
конца
файла
.
Она
истинна
(.
Т
.),
если
конец
достигнут
,
и
ложна
(.F.)
в
противном
случае
;
ВО
F([<
область
>]) -
то
же
,
но
для
начала
файла
.
Необязательный
параметр
<
область
>
указывает
,
для
ка
-
кой
рабочей
области
запрашивается
значение
функции
.
По
умолчанию
текущая
область
.
Функции
в
FoxPro
имеют
характерный
синтаксис
-
скобки
,
даже
если
никакого
аргумента
нет
и
они
остаются
пустыми
.
Просмотр
данных
Просмотр
данных
в
FoxPro
осуществляется
очень
близки
-
ми
по
смыслу
и
синтаксису
командами
LIST
и
DISPLAY:
DISPLAY [<
границы
>] [<
поля
>[WHILE <
условие
>]
[FOR <
условие
>][OFF][
ТО
PRINT/TO FILE <
файл
>]
Здесь
:
OFF -
указание
на
то
,
что
номера
записей
не
выводятся
;
ТО
PRINT -
результат
команды
выдается
на
принтер
;
ТО
FILE <
файл
> -
результат
выдается
в
<
файл
>.
Если
не
указать
расширение
имени
,
то
оно
будет
ТХТ
.
В
качестве
заголовка
вывода
командой
выдаются
имена
Полей
базы
данных
.
При
заполнении
экрана
выполнение
коман
-
ды
приостанавливается
с
индикацией
указания
«
Нажмите
лю
-
бую
клавишу
».
При
нажатии
просмотр
может
быть
продолжен
.
После
выполнения
команды
указатель
записи
перемещается
на
последнюю
показанную
запись
.
Записи
,
помеченные
к
удале
-
нию
,
команда
выдает
со
звездочкой
(
если
SET DELETED OFF).
Выдачу
имен
полей
можно
подавить
командой
SET HEADING OFF
(
восстановление
- ON).
Чтобы
выдать
мемо
-
поля
,
их
имена
нуж
-
но
явно
указать
в
списке
FIELDS,
иначе
они
выводятся
просто
столбцом
«memo».
Команда
SET MEMOWIDTH <
выр
N>
определяет
фактическую
ширину
строки
для
выводимого
мемо
-
поля
.
Команда
DISPLAY
без
параметров
осуществляет
выдачу
всех
полей
базы
данных
только
одной
текущей
записи
.