Поиск и упорядочение информации в таблице

SET FILTER TO <условие> – установка условия для всех следующих команд обработки данных

SET FILTER TO без параметров – отмена ранее поставленных условий

LOCATE FOR <условие> [<границы>] [WHILE <условие>] – последовательный поиск. Предварительное индексирование не требуется. При успешном поиске функция Found() выдает значение True, а функция Recno() указывает на номер искомой записи с первым вхождением заданного условия поиска. Продолжение поиска осуществляется командой CONTINUE.

 

USE Students

SET FILTER TO Group=21402

LOCATE FOR Name=”Екатерина”

DISPLAY

CONTINUE

 

SORT ON <список полей с ключами> TO <имя новой таблицы> [<границы>][<условия>] – создание новой таблицы, в которой физическое размещение записей соответствует заданному принципу. Первое поле в списке считается главным. Ключи: /A – сортировка по возрастанию, /D – сортировка по убыванию.

 

SEEK <выражение> – быстный поиск по ведущему индексу. Если поиск удачен, Found() возвращает True, а Recno() – номер первой записи, удовлетворяющей условию (при этом остальные искать не надо, они находятся ниже по соседству). Помимо команды SEEK и её синонима FIND существует аналогично работающая функция Seek(<выражение>), возвращающая True, если поиск удачен.

 

Пример программы изменения данных в таблице: откроем БД Streets, найдём запись со значением «Урицкого» (считаем, что запись уникальная) и заменим её на «Александра Невского».

Clear ALL

Set near off && включаем нежёсткий режим поиска

Use Streets

Set index to && закрываем все дополнительные индексные файлы

INDEX on street_nam to ind_name && создаём новый индексный файл по полю street_nam

SEEK ”Урицкого” && быстрый поиск возможен только с использованием индекса

If Found()

Replace street_nam WITH ”Александра Невского”

else

? ”Нет такого имени”

endif

 

BROWSE && проверим, что сейчас таблица упорядочена по алфавиту по полю street_nam

Set index to

 

Связи между таблицами

SET RELATION TO <ключевое поле> INTO <область>, … [ADDITIVE] – связывает указатель записей в активной рабочей области с указателями записей из других рабочих областей по заданному полю. Дочерние таблицы должны быть открыты, и в обязательном порядке проиндексированы по ключевым полям. Создаётся связь вида 1:1.

SET RELATION TO без параметров – разрывает связи между всеми таблицами.

SET SKIP TO <область> – преобразует связь 1:1 к связи 1:М

JOIN <параметры> – альтернативный вариант команды для связывания таблиц

 

Пример: создадим программу, осуществляющую выборку из двух таблиц, связанных по одному индексному полю. Программа должна запросить фамилию и вывести на экран владельцев телефонов с заданными фамилиями, номера их телефонов и адреса.

 

clear

select 1

use streets

index on id_street to id_1 unique && совершенно очевидно, что код улицы уникален

pathind=ndx(1) && функция возвращает путь к индексному файлу

select 2

use phones_flat

set relation to id_street into streets && связь один-к-одному

var_name=Space(30) && определим переменную текстового типа

@ 4,4 SAY "Введите имя для дальнейшего поиска:"

@ 5,4 GET var_name PICTURE "@!" && воспользуемся простыми средствами ввода данных

READ

set filter to Alltrim(Upper(name))==AllTrim(m.var_name) && можно и так ...

i=1

FormatFont="FONT 'Courier',12 " && эта переменная будет использована как макроподстановка

@ 6,1 && всего лишь начало области вывода

do while not eof()

&& самая простая команда вывода при желании может обрести неожиданный вес

? i PICTURE "@L 9999 " &FormatFont STYLE 'BI',;

Padr(Substr(surname,1,At(" ",surname)),20," ") &FormatFont ,;

house PICTURE "@R дом 9999 " FONT 'Tahoma',14 STYLE 'B',;

" по ",;

AllTrim(streets.street_typ) &FormatFont,;

streets->street_nam &FormatFont

i=i+1

skip

enddo

set filter to

set relation to

close indexes

close tables

erase "&pathind"

 

Разработка форм в FoxPro 6.

Вызов редактора форм из командной строки с целью создания формы: create form <имя формы> При этом создаётся файл <имя формы>.scx.

 

Редактирование формы: modify form <имя формы> При этом открывается окно Form Designer с панелями Form Controls и Properties. Прежде всего необходимо сформировать среду окружения (выпадающее меню Data Environement при клике на окне формы) для формы: добавить таблицы и связать их между собой.

 

Созданная форма сразу готова для выполнения (меню Form / Run Formили кнопка «!»). Запуск формы на выполнение из командной строки:

do form <имя формы>

read events

 

Обращение к объектам текущей формы:

thisform.<имя объекта>.<имя свойства> = <значение>

 

Основные поля, методы или свойства формы и связанные с ними типичные реакции:

Unload Event закрытие формы clear events
Init Event инициализация формы устанавливаются нач. знач. объектов формы
Caption заголовок формы уже установлен

 

Основные объекты формы:

мастер помогает установить параметры объектов 1. Поле комментария (Label) текстовая информация (заголовки)
2. Текстовое поле (Text Box) поле ввода и вывода данных с форматом и маской
3. Поле редактирования (Edit Box) поле для редактирования символьных полей большого размера и memo-полей
4. Кнопка (Command Button) одиночная кнопка с надписью или рисунком
5. Группа кнопок (Command Group) заданное количество кнопок в одном контейнере*
6. Группа переключателей (Option Group) Кнопки с зависимой фиксацией*
7. Флажок (Check Box) Принимает значение 0 или 1
8. Поле со списком (Combo Box) Данные вводятся или выбираются из вып. списка
9. Список выбора (List Box) Отображение многостолбцовых данных со скролл.
10. Катушка (Spinner) инкремент/декремент с заданным шагом
11. Табличное представление (Grid) если не хочется использовать BROWSE
12. Изображение (Image) поддерживаются все известные графич. форматы
13. Таймер (Timer) отображение системных часов или обновление данных через заданный интервал
14. Рамка вкладок (Page Frame) составной объект из заданного числа страниц*
15. Элем. отображения ActiveX (ActiveX Bound Control, OLE Bound Control) подключение внешних элементов управления для отображения значений поля типа General
16. Элем. управления ActiveX создание ActiveX-объекта
17. Линия, Контур (Line, Shape) линия, прямоугольник, эллипс, окружность
18. Контейнер (Container) собирает объекты для однотипного управления
19. Разделитель (Separator) разделитель кнопок
20. Гиперссылка (Hyperlink)  

* чтобы проникнуть внутрь контейнера для редактирования его объектов следует выбрать в выпадающем меню опцию «Edit», щёлкнув по объекту-контейнеру правой кнопкой мыши.

 

С помощью команд меню Format (/Align, /Size) можно сделать объекты одинакового размера, выровнять их относительно друг друга или формы, сделать равными расстояния между ними и т.п.

 

 

Для каждого объекта существуют свойства и методы, управляющие его внешним отображением (вкладка Layout в окне Properties), взаимодействием с источником данных для этого объекта (вкладка Data), методами обработки событий от других элементов или связанных с действиями пользователя (вкладка Methods), прочие свойства (вкладка Other). В выделенном на рисунке окне может работать построитель выражений (кнопка fx) для определения значения свойства (если в этом есть необходимость). Если для метода указано [Default], то выполняются действия по умолчанию для каждого из методов. Если требуется ввести собственные действия, после двойного щелчка открывается окно для ввода программы, назначаемой данному методу, помимо действий, выполняемых по умолчанию.    

 

Основные методы объектов формы и связанные с ними типичные реакции:

Caption текст для Label и Button конечно, можно менять программно, например this.caption = time()
Name имя объекта (уникальное) зная его, программно управляем объектом
Value текущее значение объекта можем устанавливать и читать, например: Thisform.Text1.Value = Date()
Picture изображение для Button и Image вводится имя файла изображения
Click Event нажатие – прежде всего для Button пример для кода кнопки «К началу таблицы»: if !bof() go top endif _screen.ActiveForm.Refresh()
Format, InputMask для полей ввода такие же опции форматирования, что и для команд SAY/GET с шаблоном PICTURE
RowSource для списков – источник данных совместно с полем RowSourceType
     

Пример кода для кнопки «Выход из формы»:

if MessageBox(“Выходить из формы ?”, 4+32+256, ”Выход”) = 6

_screen.ActiveForm.Release()

else

_screen.ActiveForm.Refresh()

EndIf

Если переменную или массив намечается использовать вне формы или при взаимодействии нескольких форм, создавайте её как Public.

 

Разработка отчётов в FoxPro 6.

Под отчётом понимается форматированное представление данных, выводимое на экран, принтер или в файл.

Вызов редактора отчётов из командной строки с целью создания нового отчёта:

create report <имя отчёта>. При этом создаётся файл <имя отчёта>.frx. На экране появляется окно Report Designer и панель инструментов Report Controls. Редактирование отчёта: modify report <имя отчёта>.

 

Создание исполняемых модулей в FoxPro 6.

  1. Создаём главную программу :

  1. В окне Project Manager нажимаем кнопку Build и выбираем Build Executable:

 








Дата добавления: 2015-07-30; просмотров: 1052;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.027 сек.