Добавлен: 28.11.2018

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

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

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
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 

без

параметров

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

выдачу

всех

полей

базы

данных

только

одной

текущей

записи