Добавлен: 28.11.2018

Просмотров: 2680

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

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 

234 
890 
460 

54 


Ж

 

М

 

Ж

 

М

 

М

 

Х

 

Б

 

Б

 

Р

 

Х

 

Х

 

Б

 



 
 
 

ОГМ

 

ОГМ

 

ОГМ

 

ХБ

 

ОХ

 

ОГМ

 

ВОХР

 

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 <

список

 

полей

> - 

перечень

 

предъявляемых

 

полей

По

 

умолчанию

 

отображаются

 

все

 

поля

 

базы

 

данных

Имя

 

каждо

-

го

 

поля

 

может

 

сопровождаться

 

ключами

определяющими

 

режим

 

доступа

 

к

 

нему

В

  <

список

 

полей

могут

 

включаться

 

вычисляемые

 

поля

Эти

 

поля

 

являются

 

функциями

 

других

 

полей

переменных

 

и

 

т

.

д


background image

 

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, 

заголовок

 

окна

 - 

КАДРЫ

указания

 

на

 


background image

 

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 

М

 

М

 


Х

 

Б

 

635000 
268000 

90000 

Рис

 1.6 

 

Замечание

 

к

 

нотации

 

примеров

Все

 

тексты

 

примеров

 

изображаются

 

так

как

 

будто

 

они

 

являются

 

фрагментами

 

про

-

грамм

и

 

при

 

этом

 

длинные

 

команды

 

разбиваются

 

на

 

части

 

при

-

емлемого

 

размера

 

с

 

помощью

 

знака

 «:». 

Поскольку

 

еще

 

не

 

рас

-

сматривались

 

средства

 

создания

 

и

 

исполнения

 

командных

 

фай

-

лов

эти

 

команды

 

следует

 

вводить

 

в

 

командном

 

окне

можно

 

в

 

одну

 

строку

опуская

 «;». 

Кроме

 

того

не

 

следует

 

повторно

 

вво

-

дить

 

команды

если

 

нужный

 

результат

 

уже

 

ранее

 

достигнут

Так

нет

 

необходимости

 

снова

 

открывать

 

файл

 

базы

 

данных

если

 

он

 

уже

 

открыт

Убедиться

 

в

 

этом

 

можно

например

по

 

виду

 

статус

-

строки


background image

 

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([<

область

>]) - 

указывает

 

номер

 

текущей

 

записи


background image

 

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 

без

 

параметров

 

осуществляет

 

выдачу

 

всех

 

полей

 

базы

 

данных

 

только

 

одной

 

текущей

 

записи