|
12.4.4. Определение позиции печати
PRovvo
Возвращает номер текущей строки на принтере.
Применение команды EJECT (прогон) устанавливает PRO\V() в ноль. 112].
См. пример в п. 12.4.4.
12.5. ФУНКЦИИ РАБОТЫ С МЫШЬЮ
Для управления интерфейсом широко используется манипулятор мышь. Позиция курсора мыши определятся с помощью функций, приведенных ниже.
12.5.1. Определение положения маркера мыши
MCOL([<okiio>J)
Возвращает номер колонки, где находится маркер мыши. Если <окно> не указано, то выдается положение относительно экрана или текущего окна. Если маркер находится вне экрана, то возвращается—I.
Пример.
CLEAR? MCOL()
12.5.2. Определение положения маркера мыши
MRO\V([<okho>1)
Возвращает номер строки, где находится маркер мыши (аналогично МСОЦ)).
Пример.
CLEAR? MR0WO
12.5.3. Контроль нажатия левой кнопки
MDOWN0
Возвращает значение «истина» (.Т.), если левая кнопка мьпш* была нажата во время выполнения функции, и значение «ложь! (.F.) — в противном случае [12]
Пример.
CLEAR
£2,2 SAY 'Нажмите <Esc> для выхода to exit'
DO WHILE.Т.
STORE MDOWNO TO per £4,2 CLEAR TO 4,6 £4,2 SAY per ENDDO
12.6. ТЕХНИЧЕСКИЕ ФУНКЦИИ
Технические функции предназначены для определения состояния и характеристик технических средств персонального компь- кдера, а также текущей среды приложения.
12.6.1- Определение количества доступных функциональных клавиш
FK.V1AX0
Возвращает число фактически доступных функциональных клавиш ПК.
Пример.
CLEAR
SET COMPATIBLE OFF? 'COMPATIBLE OFF'
? 'Доступны функциональные клавиши'
FOR i = 1 ТО FKMAXO? FKLABEL(i)
ENDFOR
SET COMPATIBLE ON
? 'Доступны комбинации функциональных клавиш'
FOR i = 1 TO FKMAXO? FKLABEL(i)
ENDFOR
12.6.2. Определение имени переменной (поля), куда вводятся данные
VARREAD0|SYS(18)
Полностью идентичные функции возвращают (прописными буквами) имя поля/переменной при вводе данных командой если было выполнено прерывание от клавиши с помощью процедуры ON KEY... или сделан вызов пользовательской функ- в опциях VAL1D/WH EN. Функция удобна при вызове на эк
ран подсказок при вводе данных: для каждого поля — своя под. сказка. Функции можно использовать совместно с командами BROWSE/CHANGE (в параметрах:W,:V,:Е) или с командой ON KEY LABEL <клавиша> DO <процсдура> WITH VARREAD().
Однако имя поля передается в них, по не прописными (большими), кроме первой буквы, а строчными буквами. При желании можно воспользоваться функцией UPPER().
12.6.3. Включение/выключение курсора на экране
SYS(2002[,1])
Включает/выключает (с параметром 1) курсор на экране. Функция аналогична команде: SET CURSOR ON/OFF.
12.6.4. Определение статуса SET-команд
SET(<Bbip. 01,1])
Возвращает текущий статус различных SET-команд.
Если используется параметр 1, то определяется статус SET-I команд вида SET...ON/OFF. Если параметр 1 опушен, то определяется статус SET-команд вида: SET...TO.
Пример Если ранее командой SETT ALTERNATE ТО model был назначен альтернативный табличный файл с именем model.txt, то использование функции SETO дает следующие результаты:
SET('alter') && возвращает OFF
SET('alter',1) && возвращает D:\FOX\LENA\model.txt.
12.6.5. Определение типа процессора
SYS(17)
Возвращаеттип процессора 18086/88; i80286; i80386 i80486 и т. Д-
12.6.6. Олреление типа видеоадаптера и монитора
SYS(2006)
Возвращаеттип платы адаптера и монитора ПК.
&& возвращает EGA/Color
Пример: ? SYS(2006) |
12.6.7. Определение готовности принтера
SYS(13)
Возвращает прописными буквами статус готовности принтера READY — готов; OFFLINE — не готов.
12.6.8. Проверка готовности принтера
PRINTSTATUSO
Возвращает значение «истина* (.Т.), если принтер готов, и значение «ложь» (.F.) — если не готов. Эта функция удобнее SYS(13).
Пример:
I? 1 PR_NTSTATL'S ()
? «Подготовьте принтер» EKDIF
• Лфф XX U* Ы
12.6.9. Определение объема свободной основной оперативной памяти
SYS(12)
Возвращает число свободных байтов основной оперативной памяти (из 640Кб).
12.6.10. Определение объема свободной (доступной) оперативной памяти
MEMoryo
Возвращает число килобайтов доступной оперативной памя- 111 Для загрузки внешних программ по команде RUN или!
12.6.11. Определение общего объема оперативной памяти
SYS(lOOl)
Возвращает размер всей имеющейся оперативной памяти (до 1Мб).
12.6.12. Определение объема оперативной памяти, занятой временными файлами
SYS(16)
Возвращает число — объем оперативной памяти, занятой переменными, окнами, меню, открытыми файлами.
12.6.13. Определение типа монитора
ISCOLOR0
Возвращает значение «истина» (.Т.), если монитор цветной и значение «ложь» (-F.), если монохроматический.
12.6.14. Определение цветовой пары
SCHEME* <вырГЧ1> [,<BMpN2>D
Возвращает цветовую пару номер <BbipN2> списка цветовых пар из схемы цветов номер <вырМ>. Если <BbjpN2> опушено, то выдается весь список.
12.6.15. Определение версии FoxPro
VERSION([l])
Возвращает номер версии пакета FoxPro, а если указан параметр I, то и дату создания и номер самого пакета.
12.7. ФУНКЦИИ ВРЕМЕНИ
Для управления параметром «время* программисту предложен широкий набор функций времени.
12-7.1 • Определение времени в часах
HOlR(<Bbip. Т>)
Функция возвращает количество часов из указанного выражения в 12-часовом или 24-часовом формате.
12.7.2. Определение времени в минутах
MINUTE(<Bup. т>)
Функция возвращает количество минут из указанного выражения.
12.7.3. Определение времени в секундах
SEC(<Bbip. Т>)
Функция возвращает количество секунд из указанного выражения.
12.7.4. Определение времени в секундах
SECONDS0
Функция возвращает количество секунд на отрезке между полуночью и текущим моментом времени в чистовом формате с точностью.001 сек.
12.7.5. Определение времени в секундах
SYS(2)
Возвращает число секунд (в виде строки символов), считая от Полуночи.
12.7.6. Определение текущего (системного) времени
ПМЕ()
Функция возвращает текущее (системное) время в 24-часо- ®°м формате.
12.8. ФУНКЦИИ АНАЛИЗА УСЛОВИИ
12.8.1. Выбор значения по условию
HF(<ycJiOBHe>, <выр1>, <выр2>)
Если <условие> истинно (True), то функция возвращает <выр!>, а если ложно (False), то — <выр2>.
Эта функция может быть помешена практически в любую команду в качестве <выражения> или в другую функцию. Необходимо только соблюсти тип выражения. Допускается вложение функций IIF.
12.9. ФУНКЦИИ АНАЛИЗА ТИПА И НАЛИЧИЯ ДАННЫХ
При программном обращении к данным необходимо знать, есть ли данные вообще, а если они есть, то какого типа. Исходя из полученного ответа, строится дальнейший алгоритм обработки данных.
12.9.1. Проверка заполнения поля (переменной)
ЕМРТУ(<выр.>)
Возвращает значение "истина” (.Т.), если <выр.> (ноле или переменная) не имеет данных, в противном случае — значение ’’ложь” (.F.).
Поле (переменная) считается пустым в зависимости от его типа и содержания (табл. 12.1).
Таблица 12.1
Тип |
пробелы |
Содержание
символьное
знаки табуляции
возврат каретки
переводы строки
цифровое
даты |
False |
нулевое значение {..} или {)
логические
memo |
отсутствует содержимое мемо-поля
12.9.2. Определение типа данных в поле (переменной)
ТУРЕ(<выр. О)
Возвращает прописной буквой символ, обозначающий тип данных <выр. О:
С — символьный;
N — числовой;
D — лата;
L — логический;
М— мемо-полс,
U — неопределенный.
Имя анализируемой переменной (<выр. С>) должно быть взято в апострофы или кавычки.
12.10. ФИНАНСОВЫЕ ФУНКЦИИ
Так как базы данных широко используются для хранения экономических показателей фирм различной сферы деятельности, то для обработки экономических показателей используются функции, представленные ниже. Стандартно поставляемые функции не могут охватить всего круга задач, поэтому дтя каждой конкретной фирмы необходимо дополнительно создавать специальные экономические и финансовые функции.
12.10.1. Возврат кредита равными долями
PAYMENT(<Bwp. Nl>, <выр. N2>, <выр. N3>)
Вычисляет размер периодических выплат за взятый кредит, на который установлен определенный процент и указано число периодов погашения кредита:
<вьимата>=РАУМЕКТ(<кредит>, <процснт>, <число периодов>)
Расчет производится по сложной ставке процентов.
Пример. В банке взят кредит на 2 года в сумме 100000 руб- Лей из расчета 10% годовых по сложной ставке процентов с ежемесячным погашением кредита равными долями.
? PAYMENT(ЮСООО, 0.1/12,241 && выводит на экран 4614.49
Если погашать кредит 1 раз в год двумя выплатами, то:
7?AYKENT(100000,0.1,2) && выводит на экран 56719.05
12.10.2. Определение общей суммы, полученной вкладчиком
FV(<BMp. Nl>, <выр. N2>, <выр. N3>)
Результат вычислений сохраняется в переменной <общая сумма>:
<о5щая сумма>=FV(<сумма пер. ззноса>, <процент>, <чис:ю периодоз>)
Пример. В течение 3 лет ежемесячно вносилась сумма 1000 рублей при годовой ставке сложных процентов — 10%. Определить общую сумму, полученную вкладчиком через 3 года.
? FV(1СС0,0.1/12,36) && выводит на экран 41781.82
* Сумма вклада 36*1000 = 36000
* Обдая сумма 41781.82
12.10.3. Определение суммы за будущие платежи
FV(<»np. Nl>, <выр. N2>, <вьф. N3>)
<выплата>=РУ(<период выплаты>, <процент>, <число периодов^
Пример. За аренду помещения надо платить ежегодно по 10000 рублей. Срок аренды — 3 года (30000 рублей). Годовая ставка процентов — 10%. Какую сумму надо заплатить вперед (сегод ня) за 3 года аренды?
? PV(10000,0.1/12,36) && выводит на экран 25826.03
12.11. ФУНКЦИИ ПОДСТАНОВКИ
Эти функции дают возможность формировать имена переменных. функции и команды непосредственно в программе.
12.11.1. Функция макроподстановки
&<снмв. псремеииая>[<выр. О]
Превращает содержимое <снмв. пере енной> или мемо-поля непосредственно в объект, который она изображает.
Пример.
а=''model.dbf''
USE &а
Иногда удобно имя файла формировать программным способом, тогда функция & незаменима.
Если имеется несколько однотипных файлов отличающихся номерами: model 1.dbf, model2.dbf, model3.dbf и т. д., то для открытия нужного файла надо выполнить команды:
INPUT 'Укажите номер файла' СО пет && нажать клавишу 3 п = 'model' LTRIM (STR (пот.))
USE &п && выводит на экран mode 13
Аргументом функции & являются вес символы, следующие за & до первого пробела.
Если необходимо составить фразу, содержащу ю кроме макроподстановки и некоторую строку <выр. О, то их соединяют точкой. Если <выр. О уже содержит точку, то их должно быть две.
INPUT 'Укажите номер удаляемого файла' СО пот п = 'model' + LTRIM (STR (пот))
ERASE &п..dbf
При формировании команд с именами файлов, переменных или полей допускается использовать символьные переменные взятые в круглые скобки, то есть:
ERASE (п + '.dbf')
Макроподстановка может применяться и дтя формирования
команд:
INP'JT 'Укажите номер удаляемого файла' ТО пот п = 'ERASE T.cdel' + LTRIM (STR (пот)) + '.dbf'
Ьп
Запрещено формировать команду после символа «&*, поэтому запись:
й'ERASE model' - LTRIM (STR (nom)) + '.dbf'
является недопустимой.
Допускается вложение макроподстановок друг в друга. Общая длина одной макроподстановки не должна превыша 255 символов.
Пр и м е р: команду DISPLAY ALL можно представить
X ='DISPLAY' у ='ALL'
&х &у && пробел обязателен, т.к. он присутствует в команде DISPLAY ALL
либо X ='DISP' у ='LAY ALL'
&х&у
12.11.2. Вычисление результата выражения
EVALUATE(<Bup. О)
Рассматривает <выр. О как некоторую формулу и возвращает вычисленный результат. Эта функция используется только в составе команд и работает очень быстро.
Пример.
? EVALUATE (' 2**3 '), EVALUATE (' DATE O')
&& выводит на экран 8, 05-01-94
USE model
? EVALUATE('rame„model')
да выводит на экран Волга
12.11-3. Команда вызова функции без присвоения
=<выр.>[,<выр.>].„
В качестве <выр.> можно использовать как встроенные функции, так и пользовательские функции [12].
Пример.
= CAPSLOCK(True) && эта команда повлечет переход
* на верхний регистр
= INKEY{120) && эта команда повлечет паузу в
* 2 кинуты.
12.12. НЕКОТОРЫЕ ПОЛЕЗНЫЕ ОПЕРАТОРЫ
12.12.1. Оператор комментария
Скоманда | функция | оператор > && < строчной комментарий
В некоторых случаях удобно текст программ снабжать строчным комментарием. Строчный комментарий облегчает чтение программы. Оператор && означает, что далее следует текст-пояснение.
12.12.2. Оператор сравнения
<выр. 1> # <выр. 2>
Если <выр. 2> не входит в <выр. 1>, то оператор возвращает значение «истина* (.Т.).
12.12.3. Комментарий в целую строку
* < комментарий >
Комментарий занимает всю строку. Оператор «* * пишется с первой позиции.
12.12.4. Оператор продолжения строки
Наличие символа «;» в конце строки означает, что следующая стРока — продолжите этой строки.
При работе с базами данных информация хранится в таблицах. Просмотр табличной информации в явном виде неудобен. Поэтому информацию из таблицы (или таблиц) извлекают, группируют, сортируют и выводят на экран или бумагу. Под отчетом понимают отформатированную информацию, которая выводится на экран, принтер или в файл. FoxPro позволяет создать несколько видов отчетов:
• одностраничный табличный отчет;
• многостраничный табличный отчет;
• отчет в свободной форме;
• почтовая этикетка.
Табличный отчет представляет собой регулярную структуру, которая состоит из произвольного количества однотипных записей. В качестве столбцов (полей) можно использовать физические поля таблицы (или нескольких таблиц) и вычисляемые поля. По желанию пользователя строки могут быть сгруппированы и отсортированы.
Если отчет создан в свободной форме, то информация, принадлежащая одной строке таблицы, может быть размещена на экране или бумаге произвольным способом. В этом случае одна строка занимает весь экран или весь печатный лист.
Почтовая этикетка является разновидностью отчета в свободной форме. На части печатного листа формируют почтовый адрес адресата и адресанта. Затем созданный блок многократно размножают на листе. При этом в каждую почтовую этикетку будет помещен уникальный почтовый адрес адресата (клиента фирмы) ** одинаковый почтовый адрес адресанта (самой фирмы).
| РРР |
| А |
|
|
|
|
|
|
- М,|. | & V |
£»*vxv# | |
. ' Г | Гг. Л |
i/I- | J |
|
|
. |
|
<Л< с' |
|
VV |
|
.И* |
|
E3 Fgrni ■ 5Я?33 £? Lsbri. |
MiciotuM Vitud FonPtb |
1 " - '■ |
Рис. 13.1. Запуск Мастера отчетов.
В Visual FoxPro создать любой из отчетов можно одним из способов:
• Стандартный отчет (Quick Report) — отчет создается по данным одной или нескольких таблиц; в отчет помешаются все поля всех указанных таблиц;
• Мастер отчетов (Report Wizard) — отчет создается поданным одной или нескольких таблиц; допускается произвольный выбор полей из указанных таблиц, сортировка и группировка данных, изменение стиля отображения данных;
• Конструктор отчетов — при создании отчета любого вида предварительно открывается база данных (проект), для которой надо создать отчет.
Для запуска Мастера отчетов надо выполнить следующее:
• На вкладке окна проекта выбрать кнопку Document. Если вкладка Document содержит кнопки управления, то выбрать
кнопку New. Если на вкладке Document кнопок управлений нет, то на экран надо вызвать контекстное меню, из которого выбрать команду New (рис. 13.1).
Эту же процедуру можно выполнить через главное меню Visual FoxPro подав команду File, а в подменю надо указать команду New.
В том и другом случае на экран выводится диалоговая панель New Report (рис. 13.2), где надо выбрать одну из кнопок:
• Report Wizard — запускает Мастер отчетов.
Рис. 13.2. Задание способа создания отчета. |
• New Report — запускает Конструктор отчетов.
New Report | E3 | |
|
|
|
... |
|
|
•. V'. | i_J |
|
Report | iJew Report |
|
If Canoe?;| |
| |
| .... . . |
|
Wtzatd Selection |
Лгу» R-«■<' Wca«J | ----- TTT.---- " ". | ШШ |
Report Wizard |
|
|
|
| i/\ |
|
| щ |
| ______ |
ОеяДч'юо: Столе? a(£*cut that croup* lecctdt I pie eparert trice locoidj horo i chtd tabe |
:'rA
Рис. 13.3. Выбор способа создания отчета.
После запуска Мастера отчетов надо определить, какие данные из одной или нескольких таблиц будут помешены в соала- ваемый отчет. Для этого в диалоговой панели Wizard Selection (рис. 13.3) надо выбрать одну из команд:
• One-to-Many Report Wizard — создание отчета по данным из нескольких таблиц, тогда между таблицам и будут установлены взаимосвязи «один-ко-миогим*.
• Report Wizard — создание отчета по данным одной таблицы.
13.1. СОЗДАНИЕ ТАБЛИЧНОГО ОТЧЕТА ПО ДАННЫМ
ОДНОЙ ТАБЛИЦЫ С ПОМОЩЬЮ МАСТЕРА ОТЧЕТОВ
В диалоговой панели Wizard Selection надо выбрать команду Report Wizard и нажать кнопку Ок.
Все диалоговые окна Мастера отчетов содержат по пять иголок управления:
• Cancel — отказ от построения отчета.
• Back — возврат к предыдущему шагу построения отчета;
• Next — переход к следующему шагу построения отчета;
• Finish — построить отчет по указанным данным;
• Help — выводит на экран контекстную подсказку.
На первом шаге Мастера отчетов «Step 1 — Select fields» (рис. 13.4) надо определить имя таблицы, по значениям которой
fwalable fiotds |
) 1 Select Fetdt Whcb bcuit do vcuwint rt >>511 teport? Setectpdatabstewf/eo Taofcs tern abfeotvrv», and iHen «fed tfe ftekb >юи wart. |
Rcpoit Wizoid
Repoit Wizard |
a^c S ьптжу Options" |
How do ум кам(tc jKwn,.xr гесовд? You can select из to I4*»!* c4 ffOCprigt |
I T с soscdy о эгоа4* crf.eoa lor»he ijoupi’Xtcfck Giouprq |
1:1 |
3] |
•w.i гл/уЛ |
S ximaydVjiv. |
J| |
J |
Fkisf: |
Г |
будет создан отчет. В раскрывающемся списке Databases and tables надо выбрать имя базы данных, которой принадлежит нужная | нам таблица. Ниже раскрывающегося списка расположено окно, в котором перечислены имена всех таблиц, принадлежащих выбранной базе данных. Справа от раскрывающегося списка Databases and tables расположена кнопка обзора, при помощи которой можно определить место хранения базы данных. В окне Available fields указаны имена полей выбранной таблицы. Поля, значения которых надо поместить в отчет, по очереди выделяют курсором и нажимают одну из кнопок: перенос выбранного поля из окна Available fields в окно Selected fields. I; перенос всех полей из окна Available fields в окно Selected ” fields. | Если поле помещено в отчет ошибочно, то это поле выделяют курсором в окне Selected fields и нажимают одну из кнопок: удаление выбранного поля из окна Selected fields. |
На втором шаге «Step 2 — Group Recodrs» создания отчета определяется необходимость группировки данных в отчете. По умолчанию группировка данных не производится (None), то есть данные помещаются в отчет в том порядке, как они хранятся в таблице. Для задания группировки по значению какого-либо по.ля надо в раскрывающемся списке «1» выбрать имя нужного поля. Допускается группировка данных внутри указанных ipvnn данных по значениям других полей. Глубина вложения группировок — 3, то есть имеются раскрывающиеся списки с именами «2» и «3» (рис. 13.5). Если задана группировка по значениям хотя бы одного паля, то становится доступной кнопка Grouping Options. Эта кнопка позволяет задать интервалы группировки значений поля и выводит на экран диалоговую панель Grouping Intervals (рис. 13.6). Если поле группировки символьное, то интервал группировки Entir* Field задается либо по одной первой букве, либо по первым дву*1 буквам и т. д. Если поле группировки числовое, то ин тервал группировки Exact Number задается либо по первому десятичному |
удаление всех полей из окна Selected fields. |
Рис. 13.5. Задание группировки данных. разряду, либо по первым двум десятичным разрядам и т. д. Интервал группировки может быть задан по каждому указанному полю группировки данных. Для каждого числовою столбца (поля) отчета можно задать вычисление итогового значения по столбцу. После нажатия |
У Entire Fiod | ■МЧ |
|
£ пЬге FiaW |
| ■! |
SrCM*n$cUsiy£is; |
a Letter |Г Initial Letter* 3 Initial Letta* • Initial Letter* - Initial Ldtsu |
ВУ:Ы----------------------------- -.--.у,...'------ I |
Wh©* гродгд V'JKVftj; >>.>; wart f<y сгоир-fevfi ГрЗД? |
Ccred { < j-acfc J |
О roup д Int val |
Group-teveJ held* |
I Ic 2\ |
Nan»book |
зГ |
Field. | ! Sum | Avj * C«nl | Mir Мех 1 | IZ.cOfcJl | |
Meme_book | Г | г Т | г | Г | CjtdsI j |
Yeer | г | г г | г | Г | |
VaKme | г | г г | г | Г* % |
|
| г | г г | г | г- V |
|
^sage | г | г г | г | г. |
|
$uiam<*y> Oplioru |
Г5" г-х! $_rvivyy jgrnttat1, criy |
Г CafcUiie paocr* oUoist 1от sum |
t*ot««s |
ЩШШЯ1Ш |
Рис. 13.7. Задание вычисления итогового значения.
кнопки Summary Options на экран выводится диалоговая панель Summary Options (рис. 13.7).
Для каждого числового столбца (поля) можно задать вычисление следующих итоговых значений:
Sum — вычислить сумму по столбцу;
Avg — вычислить среднее значение по столбцу;
Count — определить количество значений в столбце;
Min — определить минимальное значение столбца;
Мах — определить максимальное значение оголбца.
Дата добавления: 2015-09-29; просмотров: 17 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |