КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ
по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 1
1. Общие сведения о реляционной модели данных.
2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные:
Название поля Тип Пояснение
TAB numeric табельный номер
FIO character ФИО
POL character пол
DATA date дата рождения
OBR logical наличие высшего образования
LANG numeric кол-во ин. языков, кот-ми влад. Работник
STAG numeric стаж работы на фирме
DETI numeric количество детей
SRZAR numeric среднемесячная зарплата
COMP logical знание ПК
Вывести поля TAB, FIO, DATA, OBR первой записи в БД для работника, проработавшего на фирме не менее 10 лет.
3. Задача
Зав. кафедрой Преподаватель
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 2
1. Структура команд СУБД FoxPro.
2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные:
Название поля Тип Пояснение
TAB numeric табельный номер
FIO character ФИО
POL character пол
DATA date дата рождения
OBR logical наличие высшего образования
LANG numeric кол-во ин. языков, кот-ми влад. работник
STAG numeric стаж работы на фирме
DETI numeric количество детей
SRZAR numeric среднемесячная зарплата
COMP logical знание ПК
Найти и вывести на экран количество работников, средняя зарплата которых не менее 250 грн.
3. Задача
Зав. кафедрой Преподаватель
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ
по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 3
1. Создание и изменение структуры БД. Типы данных (типы полей).
2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные:
Название поля Тип Пояснение
TAB numeric табельный номер
FIO character ФИО
POL character пол
DATA date дата рождения
OBR logical наличие высшего образования
LANG numeric кол-во ин. языков, кот-ми влад. работник
STAG numeric стаж работы на фирме
DETI numeric количество детей
SRZAR numeric среднемесячная зарплата
COMP logical знание ПК
Найти и вывести на экран количество работников фирмы, родившихся позднее 1954 года.
3. Задача
Зав. кафедрой Преподаватель
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ
по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 4
1. Средства редактирования данных. Команда BROWSE. Ключи и опции команды.
2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные:
Название поля Тип Пояснение
TAB numeric табельный номер
FIO character ФИО
POL character пол
DATA date дата рождения
OBR logical наличие высшего образования
LANG numeric кол-во ин. языков, кот-ми влад. работник
STAG numeric стаж работы на фирме
DETI numeric количество детей
SRZAR numeric среднемесячная зарплата
COMP logical знание ПК
Найти и вывести на экран количество работников (женщин), имеющих высшее образование.
3. Задача
Зав. кафедрой Преподаватель
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ
по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 5
1. Средства просмотра содержимого БД (DISPL, LIST, их отличие).
2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные:
Название поля Тип Пояснение
TAB numeric табельный номер
FIO character ФИО
POL character пол
DATA date дата рождения
OBR logical наличие высшего образования
LANG numeric кол-во ин. языков, кот-ми влад. работник
STAG numeric стаж работы на фирме
DETI numeric количество детей
SRZAR numeric среднемесячная зарплата
COMP logical знание ПК
Найти и вывести на экран количество работников (женщин), владеющих навыками работы на ПК.
3. Задача
Зав. кафедрой Преподаватель
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ
по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 6
1. Средства редактирования и добавления новых записей в БД (EDIT, CHANGE и APPEND).
2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные:
Название поля Тип Пояснение
TAB numeric табельный номер
FIO character ФИО
POL character пол
DATA date дата рождения
OBR logical наличие высшего образования
LANG numeric кол-во ин. языков, кот-ми влад. работник
STAG numeric стаж работы на фирме
DETI numeric количество детей
SRZAR numeric среднемесячная зарплата
COMP logical знание ПК
Найти и вывести на экран среднюю зарплату для работников фирмы (женщин), имеющих 3-х и более детей.
3. Задача
Зав. кафедрой Преподаватель
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ
по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 7
1. Логическое упорядочивание БД. Создание и использование индексных файлов.
2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные:
Название поля Тип Пояснение
TAB numeric табельный номер
FIO character ФИО
POL character пол
DATA date дата рождения
OBR logical наличие высшего образования
LANG numeric кол-во ин. языков, кот-ми влад. работник
STAG numeric стаж работы на фирме
DETI numeric количество детей
SRZAR numeric среднемесячная зарплата
COMP logical знание ПК
Найти и вывести на экран среднюю зарплату на фирме.
3. Задача
Зав. кафедрой Преподаватель
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ
по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 8
1. Последовательный поиск информации в БД (LOCATE, CONTINUE).
2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные:
Название поля Тип Пояснение
TAB numeric табельный номер
FIO character ФИО
POL character пол
DATA date дата рождения
OBR logical наличие высшего образования
LANG numeric кол-во ин. языков, кот-ми влад. работник
STAG numeric стаж работы на фирме
DETI numeric количество детей
SRZAR numeric среднемесячная зарплата
COMP logical знание ПК
Вывести в BROWSE-окне список работников со стажем 10 лет. Предусмотреть вывод названия таблицы и заголовков полей по-русски.
3. Задача
Зав. кафедрой Преподаватель
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ
по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 9
1. Средства создания и отладки программ (MODI COMM, DO).
2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные:
Название поля Тип Пояснение
TAB numeric табельный номер
FIO character ФИО
POL character пол
DATA date дата рождения
OBR logical наличие высшего образования
LANG numeric кол-во ин. языков, кот-ми влад. работник
STAG numeric стаж работы на фирме
DETI numeric количество детей
SRZAR numeric среднемесячная зарплата
COMP logical знание ПК
Найти и вывести на экран «средний стаж» работников фирмы.
3. Задача
Зав. кафедрой Преподаватель
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ
по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 10
1. Средства алгоритмического языка в FoxPro. Команды присваивания и STORE. Работа с массивами.
2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные:
Название поля Тип Пояснение
TAB numeric табельный номер
FIO character ФИО
POL character пол
DATA date дата рождения
OBR logical наличие высшего образования
LANG numeric кол-во ин. языков, кот-ми влад. работник
STAG numeric стаж работы на фирме
DETI numeric количество детей
SRZAR numeric среднемесячная зарплата
COMP logical знание ПК
Найти и вывести на экран содержимое полей FIO, DATA, SRZAR, COMP записи для самого молодого работника фирмы.
3. Задача
Зав. кафедрой Преподаватель
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ
по дисциплине: «Информатика и компьютерная техника»
Экзаменационный билет № 11
1. Средства алгоритмического языка FoxPro. Команды IF и CASE.
2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные:
--PAGE_BREAK----PAGE_BREAK----PAGE_BREAK--
Экзаменационный билет № 11
3. Вывести в BROWSE-окне список работников с высшим образованием, владеющих навыками работы на ПК. Предусмотреть вывод названия таблицы и заголовков полей по-русски. Оформить в виде процедуры, которая использует пол сотрудника в качестве параметра. Обеспечить вызов процедуры для пола «М» и «Ж».
Экзаменационный билет № 12
3. Вывести в BROWSE-окне список работников со стажем 10 лет, владеющих навыками работы на ПК. Предусмотреть вывод названия таблицы и заголовков полей по-русски. Оформить решение в виде процедуры, стаж работы предавать как параметр. Предусмотреть вызов процедуры.
Экзаменационный билет № 13
3. Вывести в BROWSE-окне список всех работников, которые владеют иностранными языками. Сформировать вычисляемое поле NADBAVKA, в котором предусмотреть выплату премиальных в размере 15% и 30% от средней зарплаты работникам, владеющим 2 и более языками соответственно. Предусмотреть вывод названия таблицы и заголовков полей по-русски.
Экзаменационный билет № 14
3. Вывести в BROWSE-окне список всех работников, которые владеют иностранными языками. Сформировать вычисляемое поле NADBAVKA, в котором предусмотреть выплату премиальных в зависимости от стажа работы: 25 лет – 20% от средней зарплаты. Предусмотреть вывод названия таблицы и заголовков полей по-русски.
Экзаменационный билет № 15
3. Вывести в BROWSE-окне список всех работников, которые владеют иностранными языками. Сформировать вычисляемое поле SUBSIDIA, в котором предусмотреть выплату субсидий работникам в размере 15% от средней зарплаты работникам, имеющим 3 и более детей. Предусмотреть вывод названия таблицы и заголовков полей по-русски.
Экзаменационный билет № 16
3. Найти и вывести на экран содержимое полей FIO, DATA, SRZAR, POL для работника, дольше всех проработавшего на фирме
Экзаменационный билет № 17
3. Найти и удалить (логически и физически) из БД все записи для работников, достигших 40 лет. Оформить в виде процедуры.
Экзаменационный билет № 18
3. Найти и удалить (логически и физически) из БД все записи для работников (мужчин), достигших пенсионного возраста.
Экзаменационный билет № 19
3. Вывести в BROWSE-окне список работников со стажем 10 лет, владеющих навыками работы на ПК. Предусмотреть вывод названия таблицы и заголовков полей по-русски. Выводимые в BROWSE-окне упорядочить по дате рождения, предварительно удалив записи, в которых возраст сотрудника более 50 лет.
Экзаменационный билет № 20
3. Вывести в BROWSE-окне список работников с высшим образованием, владеющих навыками работы на ПК. Предусмотреть вывод названия таблицы и заголовков полей по-русски. Выводимые в BROWSE-окне упорядочить по дате рождения. Оформить в виде процедуры, предусмотреть ее вызов.
Экзаменационный билет № 21
3. Вывести в BROWSE-окне список работников с высшим образованием. Предусмотреть вывод названия таблицы и заголовков полей базы данных по-русски. Выводимые в BROWSE-окне упорядочить по табельному номеру, предварительно удалив записи сотрудников пенсионного возраста (женщин).
Экзаменационный билет № 22
3. Вывести в BROWSE-окне список работников (женщин), владеющих навыками работы на ПК. Предусмотреть вывод названия таблицы и заголовков полей по-русски. Выводимые в BROWSE-окне упорядочить по фамилии. Оформить в виде процедуры, в которой пол передается как параметр. Обеспечить вызов процедуры.
Экзаменационный билет № 23
3. Вывести в BROWSE-окне список работников с высшим образованием, владеющих навыками работы на ПК. Предусмотреть вывод названия таблицы и заголовков полей по-русски. Выводимые в BROWSE-окне упорядочить по полю «стаж». Оформить в виде процедуры, предусмотреть вызов процедуры. В качестве параметра использовать работников с высшим образованием.
Экзаменационный билет № 24
3. Вывести в BROWSE-окне список работников, имеющих 3-х и более детей. Предусмотреть вывод названия таблицы и заголовков полей базы данных по-русски. Выводимые в BROWSE-окне упорядочить по полю «количество детей». Добавить вычисляемое поле-надбавка: 2 % от зарплаты за каждого ребенка. Оформить в виде процедуры.
Экзаменационный билет № 25
3. Вывести в BROWSE-окне список работников, имеющих 3-х и более детей. Предусмотреть вывод названия таблицы и заголовков полей базы данных по-русски. Выводимые в BROWSE-окне упорядочить по дате рождения. Добавить вычисляемое поле-надбавка: 15 % от зарплаты, если она меньше 150. Оформить в виде процедуры. Обеспечить вызов процедуры.
Экзаменационный билет № 26
3. Вывести в BROWSE-окне список работников, имеющих 3-х и более детей. Предусмотреть вывод названия таблицы и заголовков полей базы данных по-русски. Выводимые в BROWSE-окне упорядочить по дате рождения. Добавить вычисляемое поле – надбавка: 3% за ребенка (каждого) от средней зарплаты
Экзаменационный билет № 27
3. Найти максимальное значение из двух величин. Оформить нахождение максимального значения в виде функции. Написать фрагмент программы, реализующей вызов данной функции.
Экзаменационный билет № 28
3. Найти минимальное значение из 2 величин. Оформить нахождение минимального значения в виде функции.
Написать фрагмент программы, реализующей вызов данной функции.
Экзаменационный билет № 29
3. Дано 2 переменных. Найти количество нулевых значений. Оформить нахождение нулевых значений в виде функции.
Написать фрагмент программы, реализующей вызов данной функции.
Экзаменационный билет № 30
3. Дано 2 переменных. Найти количество положительных значений. Оформить нахождение положительных значений в виде функции. Написать фрагмент программы, реализующей вызов данной функции.
Экзаменационный билет № 31
3. Дано 2 переменных. Найти количество отрицательных значений. Оформить нахождение отрицательных значений в виде функции. Написать фрагмент программы, реализующей вызов данной функции.
Экзаменационный билет № 32
3. Дано 2 переменных. Найти количество значений, меньших 10. Оформить нахождение значений, меньших 10, в виде функции. Написать фрагмент программы, реализующей вызов данной функции.
Экзаменационный билет № 33
3. Написать фрагмент программы, устанавливающую связь один ко многим между двумя базами данных KADR1 и KADR2 по полю TAB
Экзаменационный билет № 34
3. Написать фрагмент программы, устанавливающую связь один к одному между двумя базами данных BRIG1 и BRIG2 по полю KOD
Экзаменационный билет № 35
3. Создать справочник товаров по базе данных SUPPLY. В справочник должны быть включены поля код_товара и наименование_товара.
Экзаменационный билет № 36
3. Найти и вывести на экран максимальную зарплату на фирме.
ВВЕДЕНИЕ
Методическиеуказанияпредназначеныдля проведенияпрактическихи лабораторныхзанятий подисциплине«Информатикаи компьютернаятехника» длявсех форм обучения.В них краткоизложены технологииреляционныхСУБД, реализацияих средствамиСУБД FoxPro, а также даныпрактическиеприемы их реализации.Основное вниманиеуделено изложениюкоманд языкапрограммированиясреды FoxProс пояснениямина конкретныхпримерах изаданиях поосновным темам.
РЕЛЯЦИОННАЯ МОДЕЛЬ
Поспособу установлениясвязей междуданными различаютреляционную,иерархическуюи сетевуюмодели.
Реляционнаямодель являетсяудобной и наиболеепривычнойформой представленияданных в видетаблицы. Вматематическихдисциплинахтаблице соответствуеттермин отношение(relation). Отсюда ипроизошлоназвание модели– реляционная.
Однимиз основныхпреимуществреляционноймодели являетсяее однородность.Все данныерассматриваютсякак хранимыев таблицах, вкоторых каждаястрока имеетодин и тот жеформат. Каждаястрока в таблицепредставляетнекоторыйобъект реальногомира или соотношениемежду объектами.Пользовательмодели самдолжен для себярешить вопрос, обладают лисоответствующиесущности реальногомира однородностью.Этим самымрешается проблемапригодностимодели дляпредполагаемогоприменения.
Реляционнаямодель имеетдва главныхсвойства:
базовые порции данных представляют собой отношения (relations);
операции над таблицами затрагивают только соотношения (relation closure).
Соотношение– этоматематическаяконцепция, описывающая, как соотносятсямежду собойэлементы двухмножеств.
Модельпредъявляетк таблицамследующиетребования:
данные в ячейках таблицы должны быть структурно неделимыми. Каждая ячейка может содержать только одну порцию данных. Это свойство часто определяется как принцип информационной неделимости. Недопустимо, чтобы в ячейке таблицы реляционной модели содержалось более одной порции данных, что иногда называется информационным кодированием. Примером служит идентификационный номер автомобиля. Если записать его в одну ячейку, то будет нарушен принцип неделимости информации, поскольку в ячейке окажутся разделяемые данные такие, как наименование производителя, модели, сведение о нахождении предприятия и т.д.;
данные в одном столбце должны быть одного типа;
каждый столбец должен быть уникальным (недопустимы дублирования столбцов);
столбцы размещаются в произвольном порядке;
строки размещаются в таблице также в произвольном порядке;
столбцы имеют уникальные наименования.
Двафундаментальныхправила: правило целостностиобъектов(entity integrity rule) и правило ссылочнойцелостности (referentialintegrity rule).
Первичныйключ– этостолбец илинекотороеподмножествостолбцов, которыеуникально, т.е.единственнымобразом определяетстроки. Первичныйключ, которыйвключает болееодного столбца, называетсямножественнымили комбинированнымили составным.Остальныеключи, которыеможно такжеиспользоватьв качествепервичных, называютсяпотенциальнымиили альтернативнымиключами.
Внешнийключ– этостолбец илиподмножествоодной таблицы, который можетслужит в качествепервичногоключа для другойтаблицы. Внешнийключ таблицы являетсяссылкой напервичный ключдругой таблицы.Правило целостностиобъектов утверждает, что первичныйключ не можетбыть полностьюили частичнопустым, т.е. иметьзначение null.Правило ссылочнойцелостностигласит, чтовнешний ключможет быть либопустым, либосоответствоватьзначению первичногоключа, на которыйон ссылается.
Формальноеопределениеследующее:
СхемойотношенияR называетсяконечное множествоимен атрибутов{A/>,A/>,…,A/>}.Каждому имениатрибута A/>ставится всоответствиемножество D/>, называемоедоменоматрибутаA/>,1).Имена атрибутовиногданазываютсясимволамиатрибутовили простоатрибутами.Домены являютсяпроизвольныминепустымиконечными илисчетными множествами.Пусть D=D/>/>D/>/>…/>D/>.
Отношениеr сосхемой R – этоконечное множествоотображений{t/>,t/>,…,t/>}из R в D; причемкаждое отображениеt/>rдолжно удовлетворятьследующемуограничению:t(A/>) принадлежит D/>,1кортежами.
Семействосистем управлениябазами данныхFoxPro, является продуктомизвестной фирмыFoxSoftwareи имеет широкуюпопулярностьво всем мире.В настоящемпособии рассматриваетсяверсия FoxPro2.6(нерусифицированная), работающаяпод управлениемWindows.
ТИПЫДАННЫХ
Visual FoxPro 6.0 типыданных
Тип
Описание
Размер
Диапозон
Character Любой текст 1 byte per character to 254 Любой символ
Currency
Monetary amounts (денежно-кредитные количества) 8 bytes — 922337203685477.5807 to 922337203685477.5807
Date Хронологические данные, состоящие из месяца, года, и дня 8 bytes
When using strict date formats, {^0001-01-01}, January 1st, 1 A.D to {^9999-12-31}, December 31st, 9999 A.D.
DateTime
Хронологические данные, состоящие из месяца, года, дня, и времени 8 bytes
When using strict date formats, {^0001-01-01}, January 1st, 1 A.D to {^9999-12-31}, December 31st, 9999 A.D., plus 00:00:00 a.m. to 11:59:59 p.m.
Logical
Boolean значения true или false 1 byte True (.T.) or False (.F.)
Numeric
Integers or fractions(Целые числа или фракции(доли))
8 bytes in memory;
1 to 20 bytes in table — .9999999999E+19 to .9999999999E+20
Variant
A variant can contain any of the Visual FoxPro data types and the null value. Once a value is stored to a variant, the variant asosumes the data type of the data it contains. Variants are designated with an e divfix in language syntax (Вариант может содержать любой из Визуальных FoxPro типов данных и нулевое(пустое) значение).
See data types above. См. типы данных выше.
See data types above. См. типы данных выше.
В средеFoxPro установленыследующиестандартныетипы файлов(всегосвыше60, приводятсялишь некоторые):
.dbf — файл базыданных;
.fpt — файл для хранениятекстов memo- полей;
.idx — индексныйфайл;
.cdx — мультииндексныйфайл;
.prg — командный, программныйфайл;
.mem — файл для хранениявременныхпеременных;
.fxp — откомпилированныйкомадныйprg- файл;
.pjx — файл проекта.
1. СУБДFOXPRO: ОЗНАКОМЛЕНИЕС СИСТЕМОЙРАБОТА ВМЕНЮ-ОРИЕНТИРОВАННОМРЕЖИМЕ
Работав среде FoxProвыполняетсяв одном из следующихрежимов:
— непосредственнаяинтерпретациякоманд;
— меню — ориентированныйрежим;
выполнение программ.
Приработе в первомрежиме пользовательвводит тексткоманды в командном окне. Средаосуществляетсинтаксическийконтроль ивыполняеткоманду. Некоторыекоманды в процессе выполненияпроводят собственныйдиалог с пользователем, другие могутвыдавать лишькраткие сообщенияоб итогахработы. Второйрежим предназначендля начинающегопользователя, который неосвоил ещеязыка команд. Наконец, режимвыполненияпрограммподразумевает, что пользовательбудет писатьпрограммы, используя языккоманд xBase, дополненныйспециальнымикомандамипрограммирования.Весь цикл понаписанию, отладке и выполнениюпрограмм можноосуществлятьв среде системы.
МЕНЮ — ОРИЕНТИРОВАННЫЙРЕЖИМ.
РабочеепространствоFoxPro представленоокном, верхняястрока которогоявляется строкойглавного менюсистемы. Подней- рабочаязона пользователя.В рабочемпространствеоткрыто такжекомандное окно, размер и положениекоторого можноизменять либоудалить.
Активизациястроки меню F10
Выборзаголовка меню клавишиуправлениякурсором
Вход вменю следующегоуровня Enter
Отмена Esc
--PAGE_BREAK--
ЗаклавишамиF1-F10 закрепленыстандартныедирективы, назначениеклавиш можнопереопределить.
Горячиеклавиши (например,CTRL+F2 — активизациякомандногоокна, CTRL+D- выполнениепрограмм)
Главноеменю состоитиз заголовковгрупп операцийи команд:
Для FoxPro 2.6 системноеменю выглядитследующимобразомSYSTEM FILE EDIT DATABASE RECORD PROGRAM WINDOW
Каждойгруппе соответствуетменю второгоуровня- менюопераций идиректив, некоторыеиз них открываютсвои диалоговыеокна. Перемещениявнутри окон– клавишами управлениякурсором, пополям окон- Tab.В диалогахиспользуютсякомандные«кнопки», изображенныена экране. Кним относятся, например. Ok(подтверждениеустановок). Cancel (отменаустановок).Save (сохранение)и многие другие.Недоступныепункты главногоменю и директивыимеют пониженнуюяркость.
Рассмотримнекоторыепункты главногоменю.
System-меню–вспомогательные средства FoxPro,
в томчисле:
AboutFoxPro — предъявлениефирменногознака.
Help — помощь. Просмотри выбор вариантапомощи–
клавиши управлениякурсором.
Входв следующееменю- Enter.Перемещение–
клавишиуправлениякурсором.
Контекстная помощь вызывается из любого
режима- F1.
Macros — закреплениемакрокомандза клавишамиF1 — F10.
Filer — менеджер файлов- выполняетфункции управления
файлами.
Выборполей- Tab. Левоеполе- просмотрфайлов
(скроллинг).
Правоеполе- выборнакопителя, каталога,
маркировка.Нижнее поле-манипуляцияфайлами.
Calculator — вызов калькулятора.
Calendar-Diary — вызов календарядля внесениязаписей. Левоеполе–
выбордня (по стрелкам), месяца (PgUp, PgDn), года
(Shift +PgUp,Shift+PgDn), текущая дата- Т. Правое
поле- длязаписей (Вход- Tab, Выход-Shift Tab).
SpecialCharacters — таблица символовпсевдографики.
ASCII Chart — таблицаASCII-кодов.
Capture — взятие в буферзаданной областиэкрана.
Puzzle — игра
File-меню:
New — создание
Open — открытие
Close — закрытие
Save — сохранение
Save as — сохранениес новым именем
Revert — возврат предыдущейверсии файла
Printer Setup — установкипринтера
Print — печать файла
Quit — выход
Присоздании новогофайла (New) пользователюпредлагаетсявыбрать типсоздаваемогофайла: базыданных, программный, текстовый, индексный, генератораотчетов илидр. Выбранныйтип получаетпометку(•) .
Edit –меню– встроенный текстовыйредактор системы.
Undo — отмена последнегодействия,
Redo — повторениеотмененногодействия,
Cut — вырезка частитекста в буфер,
Сoру — копированиечасти текстав буфер,
Paste — вывод содержимогобуфера в текст,
Clear — очистка частитекста,
Select All — выделение всеготекста окна,
Goto Line — переход к строке,
Find — поиск заданногофрагментатекста,
Find Again — поиск следующеговхождения,
Replace and FindAgain — последовательныйпоиск с заменой,
Replace All — полная заменавсех вхождений,
Preference — настройкаредактора.
Database–меню– работа с данными, хранимыми вБД
Setup — модификациябаз данных, индексов, фильтров,
Browse — вызов командыполноэкранногоредактирования,
Append From — добавлениезаписей издругих БД илифайлов,
Copy То — копированиев другие БД илифайлы,
Sort — сортировказаписей,
Total — создание БДс суммами позаданномупризнаку,
Average — среднее арифметическоечисловых полей,
Count — подсчет записейс указаннымпризнаком,
Sum — суммированиечисловых полей,
Calculate — вычисленияв БД,
Report — подключениеранее созданнойформы отчета,
Pack — физическоеудаление помеченныхполей,
Reindex — переиндексированиебазы.
Record-меню– работа с записямифайлов БДAppend — вызов окнадополненияБД новыми записями,Change — вызов окнаредактированиязаписей,Goto — переход к указаннойзаписи,Locate — последовательныйпоиск записипо ключу,Continue — продолжениепоиска,Seek — ускоренныйиндексный поискпо ключу,Replace — изменения(вычисления)в БД,
Delete — пометка записейдля удаления,
Recall — снятие пометокдля удаления.
Program –меню– средстваработы с программами
Do — выборкомандногофайла и исполнение,
Cancel — прерываниепрограммы,
Resume — продолжениепрограммы,
Compile — переход в окнокомпиляции,
Generate — вызов генератораприложений,
FoxDoc — вызов документаторапрограмм,
FoxGraph — вызов графическогопакета.
Window-меню–работа с окнами
Hide — удалениекомандногоокна с экрана,
Clear — очистка рабочегополя,
Move — перемещениекомандногоокна,
Size, Zoom — изменениеразмера командногоокна,
Cycle — циклическоепереключениеактивных окон,
Color — выборцветовой схемы,
Command — активизациякомандногоокна,
Debug — вызовотладочногоокна,
Trace — трассировкапрограмм,
View — переходв View
Подробнуюинформациюо работе в меню- ориентированномрежиме можнополучить изконтекстнойпомощи (Help- F1).
Ввод, редактирование, удаление, поиск, просмотр данныхможно выполнитьдля открытойвView-окнебазы данныхс помощью командRecord-менюиз главногоменю:
— добавление, ввод данных;
— изменение, корректировкаполей записей;
— пометказаписей к удалению;
— отменапометки к удалению;
— заменазначений полей;
— переходк записи, положениекоторой указываетсяв
диалоговомокне с помощьюселекторныхкнопок:
— к первой записи,
— к последнейзаписи
— поуказанию номеразаписи,
— смещениеот активнойзаписи по указаниюшага
— поискданных путемуказания в окнекритериевпоиска:
— область поискавыбираетсяиз альтернатив:
— всезаписи файла;
— следующаяза активнойзаписью;
— поуказанию номеразаписи;
— оставшиеся, начиная с активной;
— указаниелогическихусловий отборапо значениямполей в
окнередакторавыражений;
— отбор данных, пока истиннологическоеусловие;
— быстрый поискдля индексированногофайла данных
КомандыRecord-менюне затрагиваютфизическойструктуры базыданных. Замечание: В открытомBrowse-окнеудобно использоватькомбинацииклавиш:
^ N — дополнение,^Т — пометка к удалению,^W- выход с сохранениемизменений.
Команды Database-меню дают следующиевозможности:
— аналоги одноименныхкоманд из менюWindow/View;
— сжатие данных, удаление помеченныхзаписей.
— сортировказаписей позаданному ключус перезаписьюв
другойфайл данных.
Дополнительныевозможностиработы с даннымив меню— ориентированномрежиме можноосвоить с помощьюHelp-меню.
Болееширокий кругвозможностейработы с созданнойбазой данных, удовлетворяющихвсем информационным потребностямпользователя, обеспечиваетпокомандныйрежим работы(набор командвCommand-окне)либо программныйрежим (созданиекомандныхprg-файлов).
2.ОСНОВНЫЕКОМАНДЫFOXPRO
В настоящемразделе приводитсякраткое описаниеосновных командязыка программированиясреды FoxPro, которыеможно задаватьнепосредственнов Command- окне либоиспользоватьв тексте программ.Получениекомандные файлывыполняютсяв режиме интерпретации.Продуктивноеосвоение языкавозможно толькопри практическойпроработкематериала накомпьютере.
Форматкоманды FOXPRO:
ИМЯ_КОМАНДЫ [] [
[FОR][WHILE]
Здесь — границы действиякоманды:
ALL — всезаписи;
REST — всезаписи от текущейдо конца;
NEXT — следующиеN записей;
RECORD — запись с номеромN;
FОR — выполнениекоманды толькодля записей,
удовлетворяющихусловию;
WHILE — выполнениекоманды толькодо тех пор, покане
перестанетвыполнятьсяусловие.
Пример:
LIST ALL FIELDS num, name FORname = 'A'
Длядлинных записейкоманд используетсясимвол переносана следующуюстроку — ";".
КОМАНДЫУСТАНОВКИ
Кромеприведенныхвыше командв FOXPRO имеетсябольшой класскоманд, называемыхкомандамиустановки. Онине выполняюткаких-либодействий, новлияют на работудругих команд.
Имеетсядва типа командустановки:
SET ON|OFF
SET TO
ON|OFF – означает, что установкалибо включена, т.е. работает,
либовыключена.
Примеры:
SET TALK OFF – погашениявывода служебных
сообщенийо работе командна экран;
SETPROCEDURE TO a:\proc1 – назначениепроцедурногофайла.
Переченьнаиболее частоиспользуемыхкоманд установкиприведена вПриложении2.
Перейдемк рассмотрениюконкретныхкоманд.
ДИАЛОГОВЫЕ КОМАНДЫ
Созданиеи изменениеструктуры файлабазы данных.
СRЕАТЕ — созданиеструктуры БДв диалоге.
Пример
Названиеполя Тип Пояснение
TAB numeric табельныйномер
FIO character ФИО
POL character пол
DATA date дата рождения
OBR logical наличиевысшего образования
LANG numeric кол-во ин.языков, кот-мивлад. Работник
STAG numeric стаж работына фирме
DETI numeric количестводетей
SRZAR numeric среднемесячнаязарплата
COMP logical знаниеПК
MODIFYSTRUCTURE — изменениеструктурыоткрытой БД.
При вызовеэтих командсреда открываетдиалог, предоставляяэкран-формудля ввода данныхо структуресоздаваемогофайла базыданных.
КОМАНДЫ РЕДАКТИРОВАНИЯ
APPEND[BLANK] — добавлениезаписи в конецоткрытой БД
([BLANK]-пустая запись).
INSERT[BLANK][BEFORE] — вставказаписи до [BEFORE]или после
текущейзаписи.
CHANGE[][FIELDS] [WHILE]
[ FOR]- редактированиезначений полей.
DELETE[зонадействия] [WHILE][FОR]пометка
записейпризнакомудаления.
BROWSE... — команда доступапользователяк данным.
Привызове этихкоманд и наличииоткрытой базыданных средаразвертываетдля пользователяокноредактирования.Команда BROWSEбудетрассмотренанесколькопозже.
ПРОСМОТРДАННЫХ.
Команды DISPLAY и LIST
DISPLAY [][]FOR[]WHILE[]
[OFF][TO PRINT / TO FILE]
КомандаLISTс похожимифункциями неделает остановокпри выдачеданных и поумолчаниюобласть еедействия- весьфайл, а команды DISPLAY-одна текущаязапись.
Примеры:
DISPLAYREST FOF fio= ’И’
LIST'фамилия', fio FOR dolg = «инженер»
Удалениеданных
ERASE — удаление закрытогофайла;
ZAP — удалениевсех записейс сохранениемструктуры;
DELETE[] [WHILE] [FOR] — пометка к удалениюили логическоеудаление записей;
PACK — физическоеудаление, помеченных к удалениюзаписей;
RECALL [][WHILE] [FOR] — снятиепометок к удалению;
Замечание.помеченные к удалениюзаписи остаютсяв БД, однакоони могут необрабатыватьсядругими командами, если была выполненаустановка
SETDELETE ON.
Выполнениекоманды PACK приводит кфизическомууничтожениюзаписей,
БДпри этом сжимается.
Фильтрацияданных
SETFILTERТО []- установкаFOR-условия длявсех командобработкиданных (остальныеданные недоступны).
SETFILTERTOбезпараметра- отменяетограничения.
Пример:
Изменениеданных
REPLACE[][WHILE][FОR]
WITH[,WITH…] [ADDITIVE]
— множественноеизменение полейв соответствиис выражениями.
Пример: REPLACE zarp with zarp*1.25 for dolg=”инженер”
Последовательныйпоиск
LOCATE FОR[][WHILE]- поиск первой
удовлетворяющейFOR-условиюзаписи, При успешномпоиске
указательзаписей устанавливаетсяна найденнуюзапись.
CONTINUE — продолжениепоиска
Пример:
USE KADR
LOCATE FOR stag > 12
DOWHILE! EOF() &&пока не достигнутконец файладанных
? FIO
CONTINUE
ENDDO
Перечисленныекоманды могутбыть выполненыпутем выбораиз в системномменю или непосредственнымнабором вCommand-окне.Наряду с другимикомандами исредствамипрограммирования, приводимымидалее, они могутиспользоватьсятакже в текстахпрограмм.3. СОЗДАНИЕКОМАНДНЫХФАЙЛОВ
Командныефайлы представляютсобой исходныетексты программи имеют тип.prg.Они создаютсяс помощью встроенногоредактораFoxPro, вызываемогокомандой
MODIFYCOMMAND
Покоманде MODI COMM (допустимоесокращение)без указанияимени по умолчаниюсоздаетсяprg-файлбез имени. Присвоитьимя следуетпри первомсохранениитекста программы.Удобно использоватькомбинациюклавиш^Wдля сохранениятекста программы.Для редактированияранее созданнойпрограммыиспользуюткоманду
MODI СОММ .
Для запускапрограмм используетсякоманда
DO
Созданнаяпрограммавыполняетсяв режиме интерпретации. Приобнаруженииошибки выполнениепрерываетсяи комментируетсясообщением.
Пример.Приводитсятекст программы, предназначеннойдля отображения всех записейБД, содержащихинформациюо сотрудниках, получающихзарплату меньше200.
SET TALK OFF
SET DATE BRITISH
USE KADR
LOCATE FOR Zarp
DO WHILE !EOF() &&пока не достигнутконец файладанных
DISPL
CONTINUE
ENDDO
4.КомандаполноэкранногоредактированияBROWSE
КомандаBROWSEпредставляетсобой целуюсреду редактирования.Она имеет более20 различныхпараметров.Рассмотримнаиболее частоиспользуемыеиз них.
Форматкоманды.
BROWSE
[FIELDS] [FОR]
[FORMAT] [FREEZE]
[КЕУ,[,]] [LAST]
[LEDIT/ REDIT] [LOCK]
[LPARTITION] [NOAPPEND]
[NOCLEAR] [NODELETE]
[NOEDIT/NOMODIFY] [NOLGROD/ NORGRIG]
[NOLINK] [NOMENU]
[NOOPTIMIZE] [NORMAL]
[NOWAIT] [PARTITION]
[REST] [PREFERENCE]
[TIMEOUT] [ТITLЕ]
[NOOPTIMIZE] [WHEN]
[window] [NOWAIT]
[VALID[F:][ERROR]
[COLORSCHEME/ COLOR]
Действиенекоторых опциикоманды.
1.Выбор полей
FIELDS- переченьполей (по умолчанию- все).
Ключи:
:R — разрешентолько просмотрполя;
: — видимый размерполя;
: У= — контроль выходаиз поля;
:F — проверкавводимых исуществующихданных;
: Е= — выдача собственногосообщения;
: Р= — задание форматаотображенияданных по шаблону;
: Н= — указаниесобственногозаголовка поля;
: В=,[: Е] — указание границчисел или дат;
:W= — контроль входав поле.
В списокполей могутвключатьсятак называемыевычисляемыеполя, которыеявляются функциямидругих полейили переменных.
2. Отборданных
FОR — устанавливаетфильтр длязаписей; выводятсятолько
записи, удовлетворяющие;
REST — предотвращаетповторный поисксначала;
КЕУ[,] — ограничениедействия командыдиапазоном
ключевоговыраженияактивногоиндексногофайла
З. Разделениеокна
LOCKBROWSE-окно делитсяна две части, где первыеполей
дублируютсяв левой частиокна (переход^Н);
PARTITION -то же, но границапроходит пополю
LEDIT/REDIT — действуюттолько в разделенномокне и задают
формупредставленияданных (формуляр);
LPARTITION — курсор устанавливаетсяв левой половинеокна;
NOLINK — несинхронноеперемещениевидимых записей;
NOLGRID/NORGRID — удаляет вертикальныелинии разделителиполей.
4.Контрольредактированиязаписей
VALID[ERROR] -анализируетусловия длятекущей записи;
WHEN — определяетвозможностьдоступа к записи;
NOAPPEND — дополнениепо Ctrl-Nневозможно;
NOEDIT/NOMODIFY — редактированиеневозможно;
NODELETE — редактированиеневозможно;
FREEZE — единственноедоступное поле.
5.КонфигурированиеBROWSE-окна
LAST — сохранениеконфигурации;
PREFERENCEFORMAT — использованиеформатногофайла;
NOCLEAR — после выходаокно не удаляется;
NOMENU — подавляет выводсистемногоменю;
TIMEOUT — время работыс окном;
TITLE — заголовок окна;
WINDOW — позволяетоткрыть другоеокно.
Пример:
Settalk off
setdate British
usekadr.dbf
browse;
title'^t-удаление ^n-добавление^w-выход';
fields;
fio :h='ФИО':20, ;
dolg :h='должность',;
zarp :h='зарплата ',;
birth :h='день рождения',;
pol :h='рол',;
adress :h='адрес',;
godzarp= zarp*12 :h='год.зарплата':p='#####,##'
pack
closeall
5.КОМАНДЫВВОДА-ВЫВОДА
Средстванеформатированного ввода/вывода
Командавывода? / ??
вырC3>поле>условие3>вырC3>условие2>вырN2>вырN2>вырN1>вырN1>выр2>выр1>условкю1>условие>вырL2>выр2>выр1>вырСЗ>вырС2>вырС2>вырL1>вырN>список>списокцветовых>вырN5>вырC3>ловие2>окно>ycловие3>вырС2>вырN3>вырC1>вырN2>вырN1>выр2>выр1>поле>условие1>пoля>имякомандногофайла>имя>имяфайла>условие>границы>условие>выражение>поле2>выражение>поле1>условие>условие>границы>условие>условие>условие>зонадействия>условие>условие>зона>файл>файл>условие>условие>поля>зона>условие>условие> условие >условие>списокполей>зонадействия>имя_файла> параметр2> параметр1> параметр> условие>условие> зона действия> условие>условие>границы>оре>Тор> продолжение
--PAGE_BREAK--
? /?? [][АТ][,...]
Команда ? выводит выражения[] …[,]с новой строки,
?? — в текущейстроке; AT -номерстолбца в строкевывода.
Командавывода TEXT
TEXT
ENDTEXT
Этакоманда удобнадля выводабольших объемовтекста, текствыводится втом виде, какон выглядитв команде.
Командывывода \ и \\
\ — выводстроки и переводкурсора в началоследующейстроки.
\\ — вывод без переводакурсора.
Другиекоманды ввода-вывода
INPUT ТО
ACCEPT ТО
WAIT [] [ТО]
[TIMEOUT][WINDOW] [CLEAR]
Подробныекомментарии и примеры можно найти в соответствующемразделе HELP средыFoxPro.
СРЕДСТВАФОРМАТНОГО ВВОДА/ВЫВОДА
Команда@… SAY… GET
Форматкоманды:
@
[SAY
[PICTURE][COLOR SCHEME/
COLOR]]
[GET
[PICTURE]
[DEFAULT][ENABLE / DISABLE]
[MESSAGE][[OPEN] WINDOW]
[RANGE [][]]
[SIZE,]
[VALID/[ERROR]]
[WHEN]
[COLORSCHEME/COLOR]]
ЗдесьY,X — пара чисел илипеременных, определяющихномер строкии столбца. Команда@ без другихпараметровустанавливаеткурсор в заданнуюпозицию и очищаетстрокуY вправоотX.
Параметрыкоманды
@ Y,X SAY — выдает с заданнойпозиции любого
типа(поля БД, переменныеи пр.); в сложном
выраженииэлементы соединяютсязнаком "+";
@ Y,X GET — с заданнойпозиции выдаетсяпеременнаяили
поле записис возможностьюредактирования
(переменнаяуже должнасуществовать);
DEFAULT — действуеттолько приработе с переменными;
задаетвыражение поумолчанию ипредъявляетк
редактированию;
ENABLE/DISABLE — разрешает/запрещаетдоступ кget-полю;
MESSAGE — для данногополя выдаетпояснение встроке
выводасообщений;
RANGE — контролируетдиапазон значений;
SIZE — определяетобласть, отводимуюпод
редактирование;
VALID… — логическийконтроль ввода;
WHEN — входв редактируемоеполе допускаетсятолько при
истинностивыражения;
[OPEN]WINDOW — используетсясmemo-полями;
COLOR SCHEME/COLOR-определяет
раскраскуполей ввода-вывода.
Возможносоединениефраз SAYи GET в одной команде.При этом GET осуществляет предъявление и возможность редактирования.После командыили группыкоманд GET должнаобязательноследоватькоманда READ. Этакоманда приостанавливаетвыполнениепрограммы дозаполнениявсех GET -полейи присваиваетсоответствующиезначения переменнымили полям базыданных.
Примеры:
1) В 10строке, 15 колонкевывести текст 'ЗАРПЛАТА- ', в этой же строкеобеспечитьполе ввода дляпеременнойи контроль заправильностьюввода (введенноезначение должнонаходится винтервале[100.00,1778.00] ).
X= 100.00
@10,15 SAY 'ЗАРПЛАТА- ' GET X RANGE100.00,1778.00
READ
2) Обеспечитьввод значенийзарплат только кратным 10
@10,15 SAY 'ЗАРПЛАТА — ' GET X VALID MOD(X/10) = 0
READ
ШаблонPICTURE разрешаетввод толькоопределенныхсимволов данных:
А — вводтолько букв;
L — вводтолько логическихданных T / F;
N — вводтолько букви цифр;
Х — вводлюбых символов;
Y — вводтолько логическихданных Y/N;
9 — ввод толькоцифр в символьныхданных, цифри знаков"+","-" — в числовых
данных;
# — ввод цифр, пробелови знаков"+","-";
! -преобразуетстрочные буквыв прописные;
* — перед числами;
. -задает позициюдесятичнойточки.
Пример:
@10,8 SAY 'ЗАРПЛАТА — 'PICTURE ###.##'
3)Пример созданияформатногофайла CADR.FMT, дляредактированияданных в отношенииCADR.DBF. Вид экраннойформы:
Д/>АННЫЕО СОТРУДНИКЕ
Текстфайла CARD.FMT
@4, 30 SAY 'ДАННЫЕО СОТРУДНИКЕ'
@ 5, 9 ТО11, 70 DOUBLE
@5, 41 SAY ‘Сегодня'+DТОС(DАТЕ( )) + ' '
@6, 18 SAY 'Фамилия, инициалы:' GET fio
@7, 18 SAY ‘Табельныйномер: ' GET tab
@7, 40 SAY Должность: ' GET Dolg
@ 10, 12 SAY 'Выход с сохранениемизменений- ^End, без- Esc'
Созданныйформатный файлможет бытьиспользованв программес помощью командыSET FORMAT ТО .
Фрагментпрограммы:
SET FORMAT TO CARD.FMT
CHANGE
SET FORMAT TO
6.СРЕДСТВА ПРОГРАММИРОВАНИЯ
Приведенныевыше командыотносятся кязыковым средствамопределенияданных и манипулированияданными. Нарядус ними языкпрограммированиясреды FoxPro обладаетприсущимиязыкам высокогоуровня возможностями, такими какиспользованиепеременныхи массивов, организацияветвлений ициклов, созданиепроцедур идругими.
ПЕРЕМЕННЫЕ
В FoxProразрешаетсяиметь переменныетех же типов, что и поля таблицБД (кроме мемо). Тип переменнойопределяетсятипом последнегоприсваиваемогоей выражения.
Командаприсваивания:
= или
STORE ТО
Примеры:
a = b^2 + 2*c – 3*a
STORE 0 ТО a,b,c –присвоениенулевого значенияпеременнымa,b,c
МАССИВЫПЕРЕМЕННЫХ
Разрешенаработа с одномернымии двумернымимассивамипеременных.
Описаниемассивов выполняеткоманда:
DECLARE/ DIMENSION([,]).
Пример:
DIMENSIONа(3,4),b(4)
Максимальноеколичествои максимальнаяразмерностьмассивов3600. Значенияэлементовмассива формируютсяприсваиваниемим значенийвыражений либов результатеобмена с БДпосредствомследующихкоманд:
Командыуправления
Команда IF: КомандаDO CASE:
IF DO CASE
CASE
[ELSE
] CASE
ENDIF
[OTHERWIZE
]
ENDCASE
Кромеэтих командимеется оченьполезная функцияIIF ( )(см. приложение)
Примеры:
1. Найтимаксимальноезначение издвух величин.
CLEAR
INPUT “ Введите X” TO X
INPUT “ Введите Y” TO Y
IF X > Y
max = X
ELSE
max = Y
ENDIF
? “ Максимальноезначение равно:”, max
WAIT
2/>
.Найти значениефункции Y.
CLEAR
INPUT “Введите X” TO X
DO CASE
CASE X
Y = -2*X^2+5*X
CASE X>=0 AND X
Y = 15 –2*X^2
CASE X>=5
Y =ABS(12*X – SIN(12))
ENDCASE
? «Y = » ,Y
CLOSE ALL
ОРГАНИЗАЦИЯЦИКЛОВ
Циклс условием
DO WHILE Выход из цикла- EXIT
Возврат кначалу цикла- LOOP
ENDDO
Циклвида DOWHILE .T. ENDDOприменяетсякак операторныескобки.
Циклс параметром
FOR = ТО [STEP ]
ENDFOR
ЦИКЛСКАНИРОВАНИЯ
SCAN [][FOR][WHILE] ENDSCAN — применяетсядля перемещенияв базе данныхи выполнениякоманд
длякаждой записи, отвечающейусловиям.
Примеры:
Приводятсяфрагментыпрограмм поискав БД Kadr всех записей
с фамилиейна букву 'И'.
1) USE Kadr 2) USE Kadr
LOCATEFOR fio = 'И' SCAN FOR fio= 'И'
DOWHILE!EOF( )
ENDSCAN
CONTINUE
ENDDO
ПРОЦЕДУРЫ
В FoxProиспользуютсяпроцедуры каквнутренниетак и внешние, а также процедуры-функции.Внутренняяпроцедурадолжна начинатьсякомандой PROCEDURE и заканчиватьсякомандой RETURN.Внешние процедурымогут бытьобъединенывprg-файли подключаютсякомандой SETPROCEDURE TO.
Обращениек процедуре:
DO [WITH ][IN FILE ], где — список фактическихпараметров.Все входныефактическиепараметры передвызовом процедурыдолжны бытьопределены.
Формальныепараметрыописываютсяв процедурекомандой PARAMETERS.
Процедура-функцияначинаетсякомандой FUNCTION, вырабатываетв результатесвоей работыединственноезначение иможет непосредственноиспользоваться в других командах. Процедура-функциязавершается командой
RETURN, где выражениеесть результатфункции.
Процедуры
В FoxProиспользуютсяпроцедуры каквнутренниетак и внешние, а также процедуры- функции.Внутренняяпроцедурадолжна начинатьсякомандой PROCEDURE и заканчиватьсякомандой RETURN.Внешние процедурымогут бытьобъединенывprg-файли подключаютсякомандой SETPROCEDURETO. Обращениек процедуре:
DO [WITH][INFILE]
Параметрыописываютсяв процедурекомандойPARAMETERS.
Процедура-функцияначинаетсякомандой FUNCTION, вырабатываетв результатеединственноезначение иможет непосредственноиспользоваться в других командах. Завершается командойRETURN, где выражениеесть результатфункции.
Параметрыпроцедур ифункций могутизменятьсявнутри них, нодля передачиэтих измененийв вызывающуюпрограммутребуетсяиспользоватькоманду
Использованиепроцедур рассмотримдалее в разделеорганизациименю.
ЗАДАНИЕ
1.Приведеннуювыше Программу1, представьтев виде рядапроцедур:
р21- просмотрданных по штатномурасписанию(отношениеSTATE)
р22- поискданных по штатномурасписанию
р31- просмотрданных по спискусотрудников(отношениеSOTR)
р32- поискданных по спискусотрудников
р4- совместныйпросмотр двухтаблиц (состояние)
info- заставка скраткой информацией(дополнительнаяпроцедура).
Пример1.
*********** поиск в таблице Kadr***********
PROCEDURE p21
SELECT a
CLEAR
с = 0
@5, 10 SAY 'Введите табельныйномер: ' GET с PICTURE '###'
READ
@6, 2 SAY'Результатпоиска '
LOCATE ALL FOR tab = c
DO WHILE! EOF( )
? 'должность- ', dolg,' оклад — ', zarp
CONTINUE
ENDDO
WAIT 'Продолжение–Enter ' WINDOW
CLEAR
RETURN
Пример2.
********* заставка **************
PROCEDURE info
CLEAR
@8, 15 ТО 20, 60 DOUBLE && изображениерамки
@9, 25 SAY 'ШТАТНОЕ РАСПИСАНИЕ' && вывод текста
@12, 20 SAY 'Модель информационнойсистемы'
WAIT 'Продолжение–Enter ' WINDOW && пауза
CLEAR
RETURN
7.ОРГАНИЗАЦИЯ МЕНЮ
Менюявляются основнойформой поддержаниядиалога винформационныхсистемах. СредаFoxProобладает большимнабором средстворганизациисветовых иклавишных меню.Выделим двеосновных технологиипостроенияменю, которыепорождают «меню- программы»и «меню — объекты».
Меню-программаявляется частьюпрограммы, где оно создается, используетсяи удаляется.При этом вырабатываютсячисловые переменные, фиксирующиевыбор из меню, которые анализируютсякомандами DOCASE, требуют использованияциклов DOWHILEи т.д. Рассмотримдва типа такихменю. Будемиспользоватьприведеннуювыше программу, которуюпредварительноразобьем наряд процедур.
LIGHTBAR- менюстроитсяс использованиемкоманд:
@ Y,X PROMPT[MESSAGE]- выдаетв
позицииY,Xстроку менюи дополнительноесообщение,
еслиуказано MESSAGE, в строке заданнойкомандой
SET MESSAGE .
MENUTO — запоминаетцифру, соответствующуювыбору.
PULLDOWN- меню(двухуровневоеменю) используеткоманды
MENUBAR, — определяетпункты горизонтального
BAR-меню, задавая их какэлементы первогостолбца
двумерного, вовторой столбецзаносятся
сообщения,N-общее числопунктов меню.
MENU,, — определяетсодержание
вспомогательноговертикальногоменю (POPUP-меню)
READMENUBARTO, — активируетменю.
Пример
1) ********** LIGHTBAR МЕНЮ *******
SET TALK OFF
SET DATE BRITISH
USE KADR.DBF
DO WHILE .T.
CLEAR
P=1
@5,20 PROMPT “Редактированиеданных ”
@7,20 PROMPT “Поиск данных ”
@9,20 PROMPT “Средняя заработнаяплата ”
@11,20 PROMPT “Конец работы ”
MENUTOP
DOCASE
CASE P=1
BROWSE
CASE P=2
CLEAR
F=SPACE(20)
@10,15 SAY “ ВведитеФИО“ GET F
READ
LOCATE FOR FIO = F
IF !FOUND( )
@12,15 SAY “Запись нeнайдена”
WAIT
EXIT
ELSE
DISPL
ENDIF
CASE P=3
CALCULATE SUM(SRZAR) TO SUMM
SUMM =SUMM/RECCOUNT( )
@ 12,15 SAY STR(SUMM)
WAIT
CASE P=4
EXIT
ENDDO
CLOSE ALL
2) ********** PULLDOWN МЕНЮ *******
SET MESSAGE ТО15
DIMENSIONa(5, 3) &&заданиемассива, содержащего
а(1,1) = 'Информация' &&тексты пунктовгоризонтальногоменю
а(2, 1) = 'Штатноерасписание'
а(3, 1) = 'Списоксотрудников'
а(4, 1)= 'Состояние'
а(5, 1) = 'Выход'
а(1, 2) = '' &&тексты сообщений
а(2, 2) ='Работа с таблицейдолжностей'
а(3, 2) ='Работа с даннымио сотрудниках'
а(4, 2) ='Совместныйпросмотр штатногорасписанияи списка сотрудников'а(5, 2) = '3авершениеработы'
DIMENSIONb(2) && заданиемассивов длявложенных меню
b(1)= 'просмотр'
b(2)= 'поиск'
DIMENSIONc(2)
с(1) = 'просмотр'
с(2) = 'поиск'
**образ меню** &&определениеменю
MENUBAR a, 5
MENU2, b, 2
MENU3, c, 2
g= 1 &&номер пунктагоризонтальногоменю
v= 1 &&номер пунктавложенногоменю
DOWHILE .T.
CLEAR
READ MENU BAR TO g, v &&активацияменю
DOCASE &&обработкавыбора
CASE g = 1
DO info
CASE g = 2 .AND. v = 1
DO p21
CASE g = 2 .AND. v = 2
DO p22
CASE g = 3 .AND. v = 1
DO p31
CASE g = 3 .AND. v = 2
DO p32
CASE g = 4
DO p4
CASE g = 5
CANCEL
ENDCASE
ENDDO
Меню- объекты являютсянезависимымиобъектами имогут вызыватьсяиз любого местаприкладнойсистемы. Обработкавыбора из менюне требуетвведения переменныхи организациициклов, даетвозможностьсоздавать менюиз имен файлови обладаетдругими преимуществами.Рассмотримодин из вариантовменю такоготипа.
ВертикальноеPOPUP- менюсоздаетсяс помощью следующихкоманд.
DEFINEРОРUР — определениеменю,
ONSELECTION POPUP — реакциянавыбор,
ACTIVATEPOPUP — активацияменю.
3)**********POPUP- меню****************
CLEAR
DEFINE POPUPmmenuMARGIN &&определениеглавного меню
DEFINEBAR1 OFmmenuPROMPT'Информация'&& определениепунктов
DEFINEBAR 2OF mmenu PROMPT 'Штатноерасписание'
DEFINEBAR 3OF mmenu PROMPT 'Списоксотрудников'
DEFINEBAR 4OF mmenu PROMPT 'Состояние'
DEFINEBAR 5OF mmenu PROMPT 'Выход'
ONSELECTION BAR5OF mmenu DEACTIVATE POPUP &&обработкавыбора
ONSELECTION BAR1OF mmenu DO info
ONSELECTION BAR4OF mmenu DO p4
ONBAR 2OF mmenu ACTIVATE POPUP ww &&выборвложенныхменю
ONBAR 3OF mmenu ACTIVATE POPUP ss
DEFINEPOPUPww &&определениевложенных меню
DEFINEBAR 1OF ww PROMPT 'Просмотр'
DEFINEBAR 2OF ww PROMPT 'Поиск'
ONSELECTION BAR1 OF ww DO p21
ONSELECTION BAR2OF ww DO p22
ONSELECTION POPUP ww DO ww
DEFINEPOPUP ss
DEFINEBAR 1 OF ss PROMPT 'Просмотр'
DEFINEBAR 2OF ss PROMPT 'Поиск'
ONSELECTION BAR1OF ss DO p21
ONSELECTION BAR2OF ss DOp22
ONSELECTION POPUP ss DO ss
ACTIVATEPOPUP mmenu &&активацияменю
ЗАДАНИЕ
Программу1, представленнуюв виде рядапроцедур, дополнитеорганизациейМЕНЮ одногоиз предложенныхтипов. В приложениидан полныйтекст программыс использованиемPOPUP-меню длявыбора процедур.
8.ИЗОБРАЗИТЕЛЬНЫЕ СРЕДСТВА
Из большогосписка возможностейрассмотримлишь некоторые
1.Построениерамки
@ ТО [DOUBLE/PANEL
COLOR / COLOR SCHEME
В указанныхкоординатахстроится рамка, ограниченнаядвойной линией(DOUBLE), с сплошнымзаполнением(PANEL) и желаемогоцвета.
2.Управлениецветом
Обозначенияцветов:
черный N
желтый GR+ бирюзовый BG
коричневый GR
белый W
зеленый G
лиловый RB красный
Команда
SET COLOR TO [[,][,] [,]]
— устанавливаетцвета для основноготекста, длявывода сообщений,
рамкиза пределамииспользуемойобласти и фонадля основныхи
дополнительныхсообщений. Цветтекста и цветфона под ним
образуютцветовуюпару (например,W/B или R+/ GR).
Цветовуюсхемуможно определитьв диалоге исохранить вспециальномфайле и командойSET COLOR OF SCHEME TO[]/[SCHEME].Можно задатьмерцание изображения:SET BLINK ON/OFF.10. РАБОТАС НЕСКОЛЬКИМИБАЗАМИ ДАННЫХ
В FoxProдопускаетсяработа сразусо многимибазами данных, и при этом можноустанавливатьмежду нимиразнообразныесвязи, которыепозволяютсинхронноперемещатьуказателизаписей в такихсвязанныхбазах. База, вкоторой указательдвижется произвольно, считаетсястаршей, а база(базы), в которойуказательследует зауказателемстаршей базы,- младший. В старшейи младших базахдолжны бытьсовпадающиеполя. Допускаетсясцепление однойбазы с несколькимидругими. Младшиебазы, в своюочередь, могутбыть связаныс базами следующегоуровня и т.д.
Возможноустановлениедвух типовсвязей междузаписями двухсцепленныхбаз данных.Связь типа одна_запись-к-одной перемещаетуказатель вмладшей базетаким образом, что он всегдаустанавливаетсяна первую встреченнуюим запись ссовпадающимпризнаком.Остальные такиезаписи (еслиесть) остаются«не замеченными».Эта связьустанавливаетсякомандой SETRELATION.Связь типа одна_запись-ко-многим позволяетобратитьсяко всем записяммладшей базыс совпадающимпризнаком(команды SETRELATION и SETSKIPTO).
список>фон>рамка>доп>текст>списокцветовых>окантовка>,>,>имя>перем2>перем1>выр2>массив>выр1>массива>массив>переменная>выpaжeниe>выражение>выражение>имяфункции>список>имя>список>имяпроцедуры>имяфайла>имя>выражение>имя>список>списокпараметров>имя>списокпараметров>имяпроцедуры>имя>имя>команды>команды>команды>условие>условие>границы>команды>вырN3>вырN2>вырN1>переменная>команды>команды>условие>команды>команды>условие2>команды>команды>условие1>команды>условие>выpN2>выpNl>переменная>выражение>выражение>переменная>имя>списокцветовых>вырN>вырL2>вырN4>вырN3>выр4>выр3>вырСЗ>выр2>переменная/поле>выражение>вырl>,X>списокцветовыхпар>вырN5>вырL2>вырC4>вырN4>вырLl>вырN3>вырN2>выр4>выр3>вырC3>выр2>вырC2>списокцветовых>вырN1>вырCl>вырl>,X>вырN>символьнаяпеременная>сообщение>символьнаяпеременная>сообщение>переменная>сообщение>строкатекста>строка>текст>вырN>выр1>выр2>выр>выр1> продолжение
--PAGE_BREAK--
ПОНЯТИЕО РАБОЧИХ ОБЛАСТЯХ
В FoxProобрабатыватьсразу несколькофайлов базданных (до 25).Каждый такойфайл типа DBFи все вспомогательныефайлы (например, индексные)открываютсяв своей отдельнойрабочей области.Переход изобласти в областьосуществляетсякомандой:
SELECT
Первыедесять рабочихобластейидентифицируютсяномерами 1-10 илибуквами A– J.Области с 11-йпо 25-ю обозначаютсяномерами илибуквенно-цифровымиименами W11– W25.Если в качествепараметрауказать цифру0, произойдетпереход в первуюсвободнуюрабочую область.Кроме того, рабочие областии файлы базыданных могутидентифицироватьсятак называемымипсевдонимами.Псевдонимомобласти поумолчаниюявляется самоимя находящегосяв ней файлабазы данных.
Область, в которой вданный моментработаетпользователь, называетсяактивной рабочейобластью, и вней можно работатьс находящейсяздесь базойданных. В однойкоманде можноработать сполями другихбаз (открытыхв других областях).В этом случаеимя поля изнеактивнойбазы – составное: имени поляпредшествуетимя рабочейобласти илипсевдоним, разделенныезнаком «точка»:
рабочая область/ псевдоним> .имяполя>
Рабочаяобласть в составномимени указываетсялюбым разрешеннымобразом (буквой, именем ее базыданных, псевдонимом), но не номером.Номер можетбыть указанв команде SELECTи в функциях.
Привходе в СУБДактивизируетсяобласть 1 (илиА), и, если пользовательработает толькос одной базой, заботитьсяоб открытииобластей ненужно.
Вкоманде USEможно одновременноуказывать иобласть, в которойоткрываетсябаза. Пример:
USE delivery IN b.
Однакопереход в указаннуюобласть с помощьютакой командыне происходит(для переходанеобходимовоспользоватьсякомандой SELECT).
ПРИМЕРРАБОТЫ С НЕСКОЛЬКИМИБАЗАМИ ДАННЫХ
ВНЕСКОЛЬКИХОБЛАСТЯХ
Вприведеннойниже программеприводитсяпример работыс двумя базамиданных, базойПоставщик(Delivery)и базой Поставка(Supply).Структура бази назначениеполей приводитсяв Приложении№ 3. Данная программапозволяет повведенномукоду товаранайти всехпоставщиков, поставляющихданный товар.
CLEAR
SETTALK OFF
SETEXACT OFF
SELEA
USESupply
KOD=0
@1,2 SAY 'Введитекодтовара'GET KOD PICTURE'#####'
READ
LOCATEFOR indgoods = kod
IF!FOUND()
WAIT'Такого коданет'
RETURN
ENDIF
ind=inddel
SELEB
USEDelivery
LOCATEFOR inddel=ind
IF!FOUND ()
WAIT 'Такого поставщиканет'
RETURN
ENDIF
DISPLnamedel, count, tel, A.namgoods, A.pricegds
CLOSEALL
Связьвида одна_запись-к-одной
Команда
SET RELATION TO ключ> INTO область> [,ключ> INTO область>…] [ADDITIVE]
связываетуказательзаписей в активнойрабочей областис указателемзаписей издругих рабочихобластей, которыхуказаны послеслова INTO, по заданномуобщему полю(ключу). Единственноеусловие– файл базыданных, с которымустанавливаетсясвязь, долженбыть проиндексированпо этому полю.
Пример
Связатьбазы данных SUPPLY.DBF и DELIVERY.DBF по полю INDDEL.По коду поставщикавывести списокпоставщикови их реквизиты.
SETTALK OFF
CLEAR
SELEA
IFFILE ('Inddelivery.ind')
USEDelivery INDEX Inddelivery
ELSE
USEdelivery
INDEXON inddel TO Inddelivery
ENDIF
SELEB
USESupply
SETRELATION TO inddel INTO A
DOWHILE .T.
kod=0
CLEAR
@12,23 TO 14,50 DOUBLE
@13,25 SAY 'Введитекод товара' GET kod PICTURE '#####'
READ
LOCATEFOR indgoods = kod
IF!FOUND()
WAIT 'Такого товаранет'
LOOP
ENDIF
name=namgoods
IF kod 0
SETFILTER TO indgoods = kod
BROWSE;
TITLE' Список поставщиков, поставляющих' + name;
FIELDS;
INDDEL :H= ' Код поставщика' ,;
A.NAMEDEL :H= 'Названиепоставщика' ,;
A.ADRDEL :H= 'Адрес ' ,;
A.TEL :H= 'Телефон '
SETFILTER TO
ENDIF
IFLASTKEY()=27
EXIT
ENDIF
ENDDO
PACK
CLOSEALL
В этойпрограммевыводятсязаписи, в которыхдля каждогокода поставщикаinddelиз текущей базыданных Supply.dbf(открытой вобласти В) выводятсяполя A.namedel (Названиепоставщика),A.adrdel (Адрес) и A.TEL(Телефон) избазы данных Delivery.dbf (открытой вобласти A).
В FoxProимеется возможностьустанавливатьсвязи с несколькимибазами одновременно.Если со старшимфайлом, которыйуже связан сдругим, необходимосвязать некоторыйтретий (четвертыйи т.д.), следуетво все последующиекоманды SETRELATION включатьслово ADDITIVE, которое обеспечитсохранениесвязей, установленныхранее.
Связьмежду всемифайлами разрываетсякомандой SETRELATIONTO безпараметров. Связь с отдельнымфайлом в заданной — командой SETRELATION OF INTO .
Связьвида одна_запись-ко-многим
Команда SET SKIP TO [область1> [,область2 >]… ]
устанавливаетсвязь типа одна_запись-ко-многим между двумяили несколькимибазами данных.
Скаждой записьюиз старшей базымогут бытьсцеплены несколькозаписей измладшей базы.Связь можетбыть установленасразу с несколькимимладшими базами, находящимисяв указанных.
Преждечем использоватькоманду SETSKIPTO, необходимовыполнитьначальноесцепление вида одна_запись-к-одной командой SET RELATION.Удаление связи одна_запись-ко-многимосуществляетсякомандой SET SKIP TO без параметров.
Пример
Установитьсвязь междутремя базамиданных. В программеиспользуется
третьябаза Товаров(Goods.dbf), получаемаяиз БД Supply.dbf
SETTALK OFF
IFFILE ('Goods.dbf')
ERASE Goods.dbf
ENDIF
IFFILE ('Indnum.idx')
ERASE Indnum.idx
ENDIF
SELEA
USE Supply
IF FILE ('Indg.idx')
SETINDEX TO Indg.idx
ELSE
INDEX ON indgoods TO Indg UNIQUE
ENDIF
COPY TO Goods FIELDS indgoods,namgoods, measure
SELE C
USE Smdeliv
IF FILE ('Indexdel.idx')
SET INDEX TO Indexdel.idx
ELSE
INDEX ON indgoods TO IndexdelUNIQUE
ENDIF
SELECT SUPPLY
SET RELATION TO inddel INTODelivery ADDITIVE
SELE B
USE Goods
INDEX ON namgoods TO Indnum
SET RELATION TO indgoods INTOSupply ADDITIVE
SET SKIP TO Supply
BROWSE TITLE «Товары»;
FIELDS ;
Goods.Namgoods :H = «ИмяТовара» ,;
Delivery.Namdel :H = «ИмяПоставщика»,;
Delivery.Adrdel :H = «ИмяПоставщика»,;
Delivery.Count :H =«Счет», ;
Goods.Measure :H =«Ед.Измерения»,;
Supply.Pricegds :H= «Цена Единицы»,;
Supply.Quant :H= «Кол-Во Единиц»,;
Totalamount=Supply.Quant *Supply.Pricegds :H = «ОбщаяСумма»
CLOSEALL
11. РАБОТАС ОКНАМИ
Использованиеокон- оченьудобное и эффектноесредство созданияпользовательскогоинтерфейсав прикладнойпрограмме.
Определениеокна
DEFINEWINDOW FROM,TO ,
[FOOTER][TITLE][SYSTEM/DOUBLE/PANEL/NONE]
[CLOSE][FLOAT][GROW][SHADOW][ZOOM][FILL][MINIMIZE]
FOOTER, TITLE — нижний и верхнийзаголовки;
формаграниц окна:
SYSTEM — стандартная,
DOUBLE — двойная линия,
PANEL — сплошная полоса,
NONE — не определяется,
CLOSE — допускаетзакрытие окнамышью,
FLOAT — перемещениес помощью ^F7 илимышью,
GROW — изменениеразмера (^F8 илимышью),
ZOOM /
MINIMIZE — распахиваниеи свертываниеокна;
SHADOW — теневая рамка,
FILL — символ заполненияокна.
Активацияуже определенногоокна
ACTIVATEWINDOW [[][,]][,...]] ALL [BOTTOM/TOP]]
Здесьуказаны именаоткрываемыхили всех (ALL) окон.BOTTOM / TOP — размещениенового окнапод/перед ужеимеющимся.
Удалениес экрана
DEACTIVATE WINDOW[,][,...]/ALL
Удалениес экрана и изпамяти
CLEAR WINDOW — Удаление сэкрана и изпамяти ВСЕХокон
RELEASE WINDOW — Перечисленныхокон.
Восстановлениеокна
RESTORE WINDOW
Сохранениев файле
SAVE WINDOW /ALL TO
12.ПРИЛОЖЕНИЯ
12.1.СТАНДАРТНЫЕФУНКЦИИ FOXPRO
Арифметическиефункции
ABS() — абсолютноезначение числа
BETWEEN(,,) — истинно (.Т.), если
, иначе ложно(.F.) (длячисел,
строк, дат)
CEILING() — округлениечисласизбытком
FLOOR() — округлениечисла снедостатком
INТ() — целая частьчисла
МАХ(,[,...]) — максимальноезначение изсписка
аргументов(числа, строки, даты)
MIN,[,...]) — минимальноезначение изсписка
аргументов
MOD(,) — целочисленныйостаток отделения
на
ROUND(,) — округлениечисла до
знаковпосле запятой
RAND(]) — псевдослучайноечисло в диапазоне0...1
SIGN() — знак числа
Степенные, тригонометрическиеи другие функции
ЕХР() — экспонента
LOG() — натуральныйлогарифм
LOG10() — десятичныйлогарифм
SQRT() — квадратныйкорень числа
SIN() — синус отугла в радианах
COS() — косинус
TAN() — тангенс
ASIN() — арксинус (результат врадианах)
ATAN() — арктангенс
PI ( ) — число
DTOR() — преобразованиеградусной мерыугла в
радианы
RTOD() — преобразованиерадианной мерыугла в
градусы
Строковыефункции
$ — вхождение в
(результат.Т. или .F.)
AT /ATC(,[,N>) — поиск слеванаправо в строке
позиции вхождения
подстроки, начиная с
позиции строки
RАТ(,[,) — то же справаналево
INLIST(,[,…]) — вхождение в последующий
список(результат.Т.или .F.)
LEN() — длина строки
LIKE(,) — вхождение в
(результат.Т. или .F.) с
использованиемсимволов маски* и ?
OCCURS(,) — число вхожденийв
LEFT() — вырезка слеваиз строки
символов в колич.
RIGHT() — то же справа
SUBSTR(,,[]) — вырезка изстроки
подстрокисимволов от
вколичестве
символов>
LTRIM() — удаление начальныхпробелов
TRIM /RTRM() — удаление завершающихпробелов
ALLTRIM() — удаление начальныхи завершающих
пробелов
REPLICATE(,) — повтор раз строки
SPACE() — формированиестроки пробелов
длины
Функциипреобразования
АSС() — выдает ASCII кодпервого символа
CHR() — преобразуетчисло в символв
соответствиис кодом
STR(,[,[]]) — преобразуетчисло встроку
длиной с указанным
числом
VAL() — преобразуетсимвольнуюзапись числа
в число
Функцииобработкимемо-полей
ATLINE(,) — первое вхождениестроки
в
ATCLINE(,) — то же без различениястрочных и
прописныхбукв
RATLINE(,) — последнеевхождениестроки
в
MLINE(,) — возвращаетстроку из
MEMLINES() — число строкв мемо поле
Функцииработы с датами
СТОD() — преобразованиедаты из строки
символовв формат даты
DATE( ) — системная дата
DAY() — число месяцаиз даты
DMY() — представлениедаты в виде
ДДМЕСЯЦ ГГ (илиГГГТ)
DOW() — номер дня недели
DTOC() — преобразованиевыражения типадаты
в строкусимволов
GOMONTH(,) -возвращаетдату, котораяотстоит от
на ± месяцев
MONTH() — числовое значениеномера месяцапо
дате
YEAR() — числовое значениегода по дате
Функцияанализа условий
BOF(,,) — выдает значение, если условие
истинно, и еслиложно.
Функциипроверки файлови дисков
ВОF([]) — достижениеначала файла(результат
.Т. или.F.)
ЕОF[(]) — достижениеконца файла(результат
.Т. или.F.)
DBF([]) — выдает полноеимя файла БДв
текущейобласти
DISCSPACE ( ) — число свободныхбайт на активном
диске
DELETED([]) — наличие пометкизаписи к удалению
(результат.Т. или .F.)
FILE() — проверка наличияфайла
FIELD([,]) — выдает имя поляпо его номерув
активнойБД
FOUND([]) — успешное завершениепоиска
(результат.Т. или .F.)
FCOUNT([]) — число полейв открытомфайле БД
LOOKUP(,,) — ищет первоевхождениевыражения в
и выдает
LUPDATE([]) — дата последнегоизменения БД
ORDER([]) — имя главногоиндексногофайла
RECNO([]) — номер текущейзаписи активного
файлаБД
RECCOUNT([]) — общее количествозаписей
RECSIZE([]) — размер записив байтах
HEADER([) — размер заголовкаБД в байтах
SЕЕK([,]) — поиск записис в индексном
файле
ЕМРТY() — наличие данныхв объекте (результат
.Т. или .F.)
ТYРЕ() — выдает буквуимени типа
Функциипозиционирования
COL ( ) — номер текущейколонки экранаили окна
ROW ( ) — номер текущейстроки экранаили окна
РСОL( ) — номертекущей колонкина принтере
PROW ( ) — номер текущегостолбца напринтер
12.2. SET — КОМАНДЫ
Этикоманды служатдня заданияфлажков состояний, параметровсреды и т.п., которыеобычно задаютсяв начале текстапрограммы ив случае необходимостипереопределяютсяили отменяются.В среде FoxPro имеетсясвыше 100 такихкоманд. Приведемнекоторые изних. За дополнительнымиразъяснениямиможно обратитьсяк HELP.
SET ALTERNATEON/OFF — установитьфлаг выводаданных с экрана
в файл
SET BELL ON/OFF — установитьфлаг звуковогосигнала
SET BLINK ON/OFF — установитьфлаг миганиясимволов
SET SENTURYON/OFF — установитьфлаг отображениястолетия
в датах
SET CLOCK ON/OFF — установитьфлаг выводавремени
SET COLOR TO — задатьцвета меню иокон пользователя
SETCOLOR OF SCHEME — задатьцветасхемы
SETCURRENCY TO — задатьденежныйзнак
SETDATE TO… — определитьформат даты
SET DECIMALSTO… — установитьчисло цифр вдробной
частичисла
SETDEFAULT TO… — задать диски каталог поумолчанию
SET DELETEDON/OFF — установитьфлаг доступак записям с
пометкойудаления
SET ECHO ON/OFF — установитьфлаг активизацииокна отладки
SET ESCAPE ON/OFF — установитьфлаг прерыванияпо
клавишеESC
SETFILTER TO… — задать фильтрдоступа к записям
SETFUNCTION...TO… — связать командус функциональной
клавишей
SET HELP ON/OFF — установитьрежим доступак помощи
SETINDEX TO… — открыть индекс
SET KEY TO — задать предельноезначение ключевого
индекса
SETMESSAGE TO… — задать местоположениесообщений
SET ORDER TO… — задатьосновной индекс
SET PATH TO… — задать списоккаталогов дляпоиска файлов
SETPRINTER ON… — установитьфлаг выводана принтер
SETPROCEDURE TO… — открыть заданныйпроцедурныйфайл
SETRELATION TO… — установитьсвязь 1:1 с другойБД
SET RELATION OFF — разорватьсвязь с другойБД
SETSHADOWS ON/OFF — установитьфлагналичиятени
SETSKIP TO… — установитьсвязь 1:N с другойБД
SET SPACE ON/OFF — установитьфлаг вставкипробелов
SET TALKON/OFF — установитьфлаг выводарезультатов
выполнениякоманд
SETWINDOW OF MEMO TO… — задать имя окнаредактирования
мемо-полей
12.3.ТЕКСТЫ ПРОГРАММ
Структурадля базы данных:DELIVERY.DBF
Field FieldName Type Width Dec Index
1 INDDEL Numeric 2
2 NUMDEL Character 10
3 ADRDEL Character 20
4 COUNT Character 8
5 TEL Numeric 6
Структурадля базы данных:SUPLY.DBF
Field FieldName Type Width Dec Index
1 INDSUP Numeric 5
2 INDDEL Numeric 2
3 DATE Date 8
4 NAMGOODS Character 15
5 QUANT Numeric 5
6 PRICEGOODS Numeric 5 2
7 MEASURE Character 3
8 INDGOODS Numeric 5
***********************РаботаснесколькимиБД*****
USESuply
ERASEGoods.dbf
INDEXON indgoods TO Indg UNIQUE
COPYTO Goods FIELDS indgoods;
,namgoods,measure
SELECT2
USEGoods
BROWSE
CLOSEALL
SETTALK OFF
DEFINEWINDOW vvod FROM 2,2TO 7,35DOUBLE FLOAT SHADOW
DEFINEWINDOW vivod FROM 8,2TO 20,70 SYSTEM ;
COLORSCHEME 10
CLEAR
SELECTA
IFFILE ('Inddeliv.idx')
USEDelivery INDEX Inddeliv
ELSE
USEDelivery
INDEXON inddel TO Inddeliv
ENDIF
SELECTB
USESuply
SETRELATION TO inddel INTO Delivery
DOWHILE .T.
ACTIVATEWINDOW vvod
CLEAR
A=0
@2,5 SAY 'Введитекодтовара'GET A PICTURE '#####'
READ
LOCATEFOR indgoods=A
IF!FOUND()
WAIT'Такого коданет'
LOOP
ENDIF
name=namgoods
IFA0
SETFILTER TO indgoods=A
ACTIVATEWINDOW vivod
BROWSE;
TITLE'Список поставщиков, поставляющих'+name ;
FIELDS;
A.inddel :H='Кодпоставщика',;
A.namdel :H='Имяпоставщика',;
A.adrdel :H='Адреспоставщика',;
A.tel :H='Телефонпоставщика',;
A.count :H='Счетпоставщика'
DEACTIVATEWINDOW vivod
SETFILTER TO
ENDIF
DEACTIVATEWINDOW vvod
IFLASTKEY()=27
EXIT
ENDIF
ENDDO
PACK
CLOSEALL
CLEAR
SETTALK OFF
SELECTB
USEGoods
SELECTA
USESuply
INDEXON indgoods TO Indg
SELECTC
USE Delivery
INDEXON inddel TO Indexdel
SELECTSuply
SETRELATION TO inddel INTO Delivery
SELECT Goods
INDEXON namgoods TO Indnum
SETRELATION TO indgoods INTO Suply
SETSKIP TO Suply
BROWSETITLE 'Товары';
FIELDS;
Goods.namgoods :H='Имятовара',;
Delivery.numdel :H='Имяпоставщика',;
Delivery.adrdel :H='Егоадрес',;
Delivery.count :H='Счет' ,;
Goods.measure :H='Единицаизмерения' ,;
Suply.pricegoods :H='Ценаединицы' ,;
Suply.quant :H='Количествоединиц' ,;
Totalamount=Suply.quant*Suply.pricegoods;
:H='Общаясумма'
CLOSEALL
3.1. Линейнаяпрограмма
********** установки ***********
CLEAR
SETTALK OFF
CLOSEALL
USEstate IN a && открытьвзонеафайлSTATE
USE sotr IN b &&открыть в зонеb файл CADR
*********** работас таблицейstate **************
SELECT a
BROWSE;
TITLE 'Штаты ^Т– удал ^N — добав ^W – coxp ' ;
FIELDS cod :H = ‘Код’,;
dolg :H= 'Должность',;
zarp :H = 'Оклад',;
kol :H = 'Количество'
*********** поискданных в таблицеSTATE ***********
CLEAR
с = 0
@ 5, 10 SAY 'Задайтекод должности:' GET с PICTURE '###'
READ
@6, 2 SAY 'Результатпоиска'
LOCATEALL FOR cod = C
DOWHILE! EOF ( )
? 'Должность- ', dolg, ' Оклад — ', zarp
CONTINUE
ENDDO
WAIT 'Продолжение– ENTER ' WINDOW
******** работас таблицей sotr ****************
SELECT b
BROWSE;
TITLE 'Список- ^ T-удал ^ N — добав ^W — сохр' ;
FIELDS cod: Н= 'Код',;
fio :H = 'ФамилияИ.О.' ,;
tab :H = 'Табельныйномер'
**** поискданных в таблицеSOTR ****
CLEAR
с = 0
@ 5, 10 SAY 'задайтекод должности:';
GET с PICTURE '###'
READ
@ 6, 2 SAY 'Результатпоиска'
LIST 'Фамилия- ', fio, 'Табельныйномер — ', tab;
WHILE cod = c
WAIT 'Продолжение– ENTER ' WINDOW
**** работас форматом ****
SET FORMAT TO cadr.fmt
CHANGE
SETFORMAT TO
******** установлениесвязи********************
SELECT b
SETORDER TO cod
SELECTa
SETORDER TO cod
SETRELATION TO cod INTO b
SETSKIP TO b
BROWSE ;
TITLE 'Информация';
FIELDS A.dolg :H =‘должность',;
B.fio :H = 'Ф.И.О.',;
A.zarp :H = 'оклад',;
nal = A.zarp* 0.2 :H= 'налог'
SET RELATION TO
*********конецпрограммы**********
3.2 Программа, состоящая изпроцедур, вызываемыхиз меню
CLEAR ALL
SETTALK OFF
CLOSEALL
SETSHADOWS ON
USEstate IN a
USE cadr IN b
************** МЕНЮ ****************
DEFINE POPUP mmenu
DEFINEBAR1 OF mmenu PROMPT 'Информация'
DEFINE BAR2 OF mmenu PROMPT'Штатное расписание предприятия'
DEFINEBAR3 OF mmenu PROMPT 'Списоксотрудников'
DEFINEBAR4 OF mmenu PROMPT 'Состояние'
DEFINEBAR5 OF mmenu PROMPT 'Запрос'
DEFINEBAR6 OF mmenu PROMPT 'Выход'
ONSELECTION BAR6 OF mmenu DEACTIVATE POPUP
ONSELECTION BAR1 OF mmenu DO about
ONSELECTION BAR4 OF mmenu DO p2table
ONSELECTION BAR5OF mmenu DO pspr
ONBAR2 OF mmenu ACTIVATE POPUP wow
ONBAR3 OF mmenu ACTUVATE POPUP sos
DEFINEPOPUP wow
DEFINEBAR1 OF wow PROMPT ‘Просмотр'
DEFINEBAR2 OF wow PROMPT 'Поиск'
ONSELECTION BAR1 OF wow DO pstate
ONSELECTION BAR2 OF wow DO psearch
ONSELECTION POPUP wow DO wow
DEFINE POPUP sos
DEFINEBAR1 OF sos PROMPT 'Просмотр'
DEFINEBAR2 OF sos PROMPT 'Поиск'
ONSELECTION BAR1 OF sos DO pstate
ONSELECTION BAR2 OF sos DO psearch
ONSELECTION POPUP sos DO sos
ACTIVATE POPUP mmenu
************ работастаблицейstate **************
PROCEDURE pstate
SELECTa
BROWSE;
TITLE 'Штаты ^T — удал ^N — добав ^W — coxp' ;
FIELDS cod: Н= 'Код',;
dolg :H = 'Должность',;
zarp :H = 'Оклад',;
kol :H = 'Количество'
RETURN
******** поискданных в таблицеSTATE ************
PROCEDURE psearch
CLEAR
c= 0
@ 10, 15 SAY 'Задайтекод должности:';
GET с PICTURE '###'
READ
@ 12, 10 SAY 'Результатпоиска'
LOCATEALL FOR cod = c
DOWHILE! EOF ( )
? 'Должность — ',dolg, 'Оклад — ', zarp
CONTINUE
ENDDO
WAIT 'Продолжение– ENTER ' WINDOW
CLEAR
RETURN
******** работас таблицей cadr ***************
PROCEDURE pcadr
SELECT b
BROWSE;
TITLE 'Список ^T- удал ^N- добав ^W- сохр' ;
FIELDS cod :H = 'Код',;
fio :H = 'ФамилияИ.О.' ,;
tab :H= 'Табельныйномер'
RETURN
******** поискданных в таблицеSOTR *******
PROCEDUREрcadrsr
CLEAR
с= 0
@ 5, 10 SAY ‘Задайтекод должности:';
GET с PICTURE '###'
READ
@ 6, 2 SAY 'Результатпоиска'
LIST 'Фио- ', fio, ' Табельныйномер — ', tab;
WHILE cod = c
WAIT 'Продолжение– ENTER ' WINDOW
CLEAR
RETURN
******** установлениесвязи ******************
PROCEDURE p2table
SELECTb
SETORDER TO cod
SELECTa
SETORDER TO cod
SETRELATION TO cod INTO b
SETSKIP TO b
BROWSE ;
TITLE 'Информация';
FIELDS A.dolg :H = 'Должность',;
B.fio :H = 'Ф.И.О.',;
A.zarp :H = 'Оклад',;
nal = a.zarp*0.2 :H = 'Налог'
SETRELATION TO
RETURN
********* заставка ************
PROCEDURE about
CLEAR
@ 8, 15 TO 20, 60 double
@ 9, 25 SAY ‘Штатноерасписание'
@ 12, 20 SAY 'Модельинформационнойсистемы'
WAIT 'Продолжение– ENTER ' WINDOW
CLEAR
RETURN
********* запрос ************
PROCEDURE pspr
CLEAR
DEFINE WINDOW spr FROM 10, 10 TO 18, 40 ;
TITLE 'Справка' SHADOW
ACTIVATE WINDOW spr
@ 1, 1 SAY 'Запросо занятых должностяхи общем'
@ 2, 1 SAY 'Количествеставок по ним'
WAIT 'Продолжение– ENTER ' WINDIW
DEACTIVATE WINDOW spr
SELECT B
SETORDER TO cod
SELECTA
SETORDER TO cod
SETRELATION TO cod INTO b
SETSKIP TO B
SELECT A.dolg, A.kol, COUNT(B.fio) AS cnt, SUM(A.zarp) AS ssum ;
FROM state A, cadr B INTO CURSORqq ;
WHERE B.cod = A.cod ;
GROUP by A.dolg
BROWSE TITLE 'Занятыедолжности' ;
FIELDS dolg: Н ='Должность' ,;
kol: Н = 'Поштату' ,;
cnt: Н = 'Занято',;
ssum: Н = 'Суммарныйоклад'
CLEAR
SETRELATION TO
RETURN11. Задания.
1.Обеспечитьформатный вводпеременной x и форматныйвывод значенияфункции y, используяоператор ветвления case.Функция имеетвид:
2/>
.Обеспечитьформатный вводпеременной x и форматныйвывод значенияфункции y, используяоператор ветвления case.Функция имеетвид:
/>
3.Обеспечитьформатный вводпеременной x и форматныйвывод значенияфункции y, используяоператор ветвления case.Функция имеетвид:
4/>
.Обеспечитьформатный вводпеременной x и форматныйвывод значенияфункции y, используяоператор ветвления case.Функция имеетвид:
/>
5.Обеспечитьформатный вводпеременной x и форматныйвывод значенияфункции y, используяоператор ветвления case.Функция имеетвид:
6/>
.Обеспечитьформатный вводпеременной x и форматныйвывод значенияфункции y, используяоператор ветвления case.Функция имеетвид:
/>
7.Обеспечитьформатный вводпеременной x и форматныйвывод значенияфункции y, используяоператор ветвления case.Функция имеетвид:
/>
8.Обеспечитьформатный вводпеременной x и форматныйвывод значенияфункции yзуяоператор ветвления case.Функция имеетвид:
/>
РЕКОМЕНДУЕМАЯЛИТЕРАТУРА
1. ДейтК. Введение всистемы базданных. — М.: Наука-1980.-463 с.
2. МидоуЧ. Анализ информационныхсистем. — М.: Прогресс.- 1977.- 400 с.
3. ЦикритзисД., Лоховски Ф.Модели данных.-М.: Финансы истатистика.-1985.-344 с.
4. МейерД. Теория реляционныхбаз данных. — М.: Мир. -1987.-608 с.
5.Бойко В.В., СавинковВ.Ф. Проектированиебаз данныхинформационныхсистем.- М.: Финансыи статистика.-1982 .- 382 с.
6. ДжексонГ. Проектированиереляционныхбаз данных дляиспользованияс микро-ЭВМ. — М.: Мир. — 1991. — 252 с.
7. ПоповА.А. Программированиев среде FoxPro2.0. — М.: Финансы и статистика.- 1993. — 350 с.
Бемер С. FoxPro 2.6 для WINDOWS. — Киев: Торгово-издательское бюро BHV.- 1995.-463 с.вырС>выр>выр>область>выр>область>область>область>область>область>область>поле1>поле2>поле2>выр>поле1>область>область>область>вырN>имя>область>область>область>область>выр2>выр1>выр2>выр1>условие>вырD>вырD>вырN>вырD>вырN>вырD>вырD>вырD>вырD>вырD>вырC>мемополе>мемополя>вырN>вырN>мемополе>мемополе>вырС>мемо>вырC>мемополе>вырC>мемополе>вырC>мемополе>вырc>вырС>дес.знаки>длина>вырN>дec.знaки>выpN>вырN>вырC>вырN>вырN>вырC>вырN>выpN>выpC>вырC>вырC>вырC>нач.поз.>вырС1>числосимволов>нач.поз.>вырС>выpN>вырN>вырC>вырN>вырС2>вырС1>вырС2>вырC1>вырС2>вырС1>вырС2>вырC1>вырС>вырC>выр>выp2>выp2>выp1>вырN>вырС2>вырС1>вырС2>вырN>вырС1>вырС2>вырC2>вырC1>вырС2>вырС1>вырС2>вырС1>вырN>вырN>вырN>вырN>вырN>вырN>вырN>вырN>вырN>вырN>вырN>вырN>вырN>вырN>вырN>вырN>вырN>вырN>выpN>вырN>вырN>вырN>вырN>вырN2>вырN1>вырN2>вырN1>вырN2>вырN1>вырN2>вырN1>выр2>выр1>выр>выр2>выр1>выр>вырN>вырN>вырN>вырN>вырN>вырN>выр2>выр>выр1>выр2>выр1>выр>вырN>вырN>файл>окна>окна>окно2>окно1>окно2>окно1>выр>выр>выр>Х2>имяокна>областях>область>области>рабочая>