русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ПОЯСНИТЕ ТЕРМИН «ФОРМА». ОБЪЯСНИТЕ ИСПОЛЬЗОВАНИЕ ЭЛЕМЕНТОВ УПРАВЛЕНИЯ НА ФОРМЕ, РАЗМЕЩЕНИЕ ПОЛЕЙ ИЗ НЕСКОЛЬКИХ ТАБЛИЦ.


Дата добавления: 2015-07-09; просмотров: 707; Нарушение авторских прав


Форма. Объект, содержащий элементы управления и используемый для ввода и просмотра информации, находящейся в одной или нескольких связанных таблицах.

Форма в чистом виде, без элементов управления и данных, которыми она должна манипулировать, интереса не представляет. Поэтому любая форма создаётся именно с целью оперирования данными с помощью элементов управления, включаемых в форму. Данные в VFP хранятся, естественно, в таблицах и подключаются к форме с помощью специального объекта Data environment. Рассмотрим последовательность событий при запуске формы, но останавливая внимание пока только на событиях самой формы. Объект - Событие

Data environment - BeforeOpenTables

Form set - Load

Form - Load

Data environment cursor(s) - Init

Data environment - Init

Objects - Init

Form - Init

Form set - Init

Form set - Activate

Form - Activate

Object - When

Form - GotFocus

Object - GotFocus

Form - QueryUnload

Form - Destroy

Object - Destroy

Form - Unload

Form set - Unload

Data environment - AfterCloseTables

Data environment - Destroy

Data environment cursor(s) - Destroy

Load() – первое в последовательности событий объекта форма. В этом событии ни один элемент лежащий на форме еще не родился и там бессмысленно помещать код вроде this.text1.value=’я’. Это событие рекомендуется использовать для выполнения настроек среды окружения. Особенно это актуально при использовании приватных сессий данных (этот вопрос рассмотрим ниже). Также, тут имеет смысл осуществить открытие таблиц и баз данных, не включаемых в объект Data environment.

RETURN .F. в событии Load() отменяет дальнейшую загрузку формы. Если форма имеет private data session все открытые таблицы и полученные курсоры закрываются.

Init() – событие при создании формы. Следует учесть, что элементы управления, помещённые на форму, создаются раньше формы, то есть событие Init() элементов происходит раньше, и поэтому в событии Init() формы уже можно обращаться к элементам управления формы. Включив оператор LPARAMETERS в событие формы, можно осуществить возможность передачи в неё параметров. Стоит заметить, что видимость этих переменных-параметров дальше события Init() не распространяется. Поэтому в случае необходимости стоит присвоить значения параметров созданным вами свойствам формы. Приведем пример достаточно типовой ошибки, переменные переданные в Init() используются в выражении для фильтра на какую либо таблицу , участвующую в работе формы. Естественно, после срабатывания события переменных уже нет, и фильтр становиться не работоспособным, так как его значение вычисляется в момент перемещения по записям. Если необходимо, создание и соответственно запуск формы можно прекратить, выполнив команду RETURN .F. Это удобно, например, для организации допуска к формам разным пользователям или проверки верности условий запуска формы, без правильности которых, далее форма не сможет верно функционировать.



Activate() – активирование формы действиями пользователя, таким как щелчок мышью , или же когда вызывается метод SHOW() формы. Это событие при работе формы может срабатывать много раз, и иногда код, помещенный в него, может доставить разные проблемы. Скажем, там будет написан какой либо sql select

Выполнили из формы печать отчета, вернулись в форму, событие снова отработало, и явно помешало работе элементов формы, скажем гриду, чьим источником может быть курсор sql select. Рекомендуем, если нет возможности помещения кода в это событие, проверять необходимость повторного запуска кода в нем, скажем, таким образом -

If not this.old

This.DoSomething

This.old=.t.

endif

Не менее коварным может быть и элементарный код , помещенный в антипода упомянутого события – DEACTIVATE - которое тоже может многократно сработать. Куда смещается фокус из формы- в тулбар, просмотр отчета или в иное место, в этом событии неизвестно. Вот в отчете неожиданно становится видна одна запись вместо нескольких, а все потому, что в указанном событии написали всего одну строку - SELECT MyTable. Особенно кишат такими проблемами страничные формы, с кодами в указанных событиях на страницах: хотели указать алиас при смене страницы, когда пользователь остается на форме, а он в отчет пошел, и выбил у него табуретку из под него этим кодом.

GotFocus() – получение фокуса

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

QueryUnload() – это событие происходит при выполнении команд CLEAR WINDOWS, RELEASE WINDOWS или QUIT, а также при нажатии на крестик окна формы. Стоит отметить, что это событие не происходит при выполнении метода RELEASE() формы. Для того чтобы предотвратить закрытие формы исходя из необходимых разработчику условий , достаточно выполнить команду NODEFAULT в этом событии.

Destroy() – происходит при уничтожении объекта

Unload() – это последнее из событие в последовательности перед уничтожением формы, происходит после освобождения всех объектов включённых в форму. Все элементы управления, включённые в форму, в этом событии формы уничтожены и недоступны.

При использовании Default data session в форме именно в этом событии стоит закрыть таблицы, открытые с использованием команды USE , а также полученные курсоры.

Если форма модальна, используя команду RETURN можно вернуть значение переменной из формы

Для размещения в отчете поля, которое может быть полем таблицы или вычисляемым полем, выполните следующие действия:

Нажмите кнопку Field (Поле) на панели инструментов Report Controls (Элементы управления отчета).

Щелкните мышью в месте предполагаемого размещения поля в окне конструктора отчета.

В открывшемся диалоговом окне Report Expression (Выражение отчета) укажите для поля источник данных, формат, условие, при котором поле будет выводиться на печать.

Завершив установку параметров, нажмите кнопку ОК.

 

ПЕРЕЧИСЛИТЕ И ОПИШИТЕ ТИПЫ ЗАПРОСОВ. ОХАРАКТЕРИЗУЙТЕ ВОЗМОЖНОСТИ ЗАПРОСОВ, ВЫЗЫВАЮЩИХ ИЗМЕНЕНИЯ В ТАБЛИЦАХ БАЗЫ ДАННЫХ. ОПИШИТЕ ПРОЦЕСС СОЗДАНИЯ ВИЗУАЛЬНЫХ ЗАПРОСОВ.

Запрос в Visual Fox Pro - это тот же вопрос. Если вы обращаетесь с запросами к базе данных, то вы задаете ей вопросы о данных, содержащихся в ней. Запросы хранятся как программные файлы с расширением .QPR, которые содержат команду SELECT языка SQL.
Для создания запросов в Visual FoxPro можно использовать Query Wizard (Мастер по созданию запросов), или Query Designer(Конструктор запросов), или же и то, и другое. Применение Query Wizard целесообразно для быстрого создания несложных, стандартных запросов. В свою очередь Query Designer позволяет вам творчески подойти к задаче и конструировать более изящные, эффективные и сложные запросы. Далее будут рассмотрены приемы создания запросов как с помощью Query Designer, так и Query Wizard.

Рассмотрим создание запросов с помощью Query Designer. Для этого откройте ваш проект. В окне Project Manager щелкните по закладке Data и выберите пункт Queries. В меню справа щелкните на пункт New, затем в появившемся окне New Queryвыберите New Query. Закройте пока окно Add Table or View и поместите на рабочий стол панель инструментов Query Designer.

Теперь рассмотрим как можно включать в запрос вычисляемые поля. В окне Project Manager откройте запрос, нажав кнопку Modify справа. Теперь, щелкнув по уже знакомой нам вкладке Fields, нажмите кнопку с многоточием (...), находящуюся внизу, рядом со списком Functions and expressions. Откроется диалоговое окно построителя выражений Expression Builder. В этом окне с помощью разнообразных инструментов вы можете строить различные выражения, используя нужные поля таблиц.

Набрав выражение в Expression Builder, нажмите OK, затем щелкните по списку Functions and expressions и, нажав кнопкуAdd, переместите вычисляемое поле в список полей для запроса. Проверить работу полученного запроса можно, щелкнув по кнопке с изображением восклицательного знака в панели стандартных инструментов в верхней части экрана. При просмотре результатов запроса можно менять порядок следования столбцов следующим образом: захватив заголовок столбца, тащите его на нужное место. Для повторного редактирования вычисляемого поля, необходимо щелкнуть по нему в списке полей, выбранных для запроса и, затем, нажав кнопку Remove, переместить его в список Functions and expressions. Теперь можно редактировать поле в Expression Builder, зайдя туда с помощью кнопки (...).
Теперь обратимся ко вкладке Filter окна Query Designer. С помощью средств данной вкладки можно строить дополнительные критерии (условия) отбора данных при запросе. Сначала рассмотрим поля и кнопки вкладки Filter.

Средства вкладки Filter:

Поле или кнопка Назначение
Поле со стрелкой Позволяет менять местами построенные условия. Просто захватите это поле мышью у фильтра и тащите его на нужное место
Поле Field Name Служит для записи левой части критерия. Здесь можно выбрать любое поле из выбранных для запроса таблиц, а также построить выражение с помощью Expression Builder
Поле Not При установке этого флажка построенный критерий меняется на противоположный
Поле Criteria Служит для задания операции условного выражения критерия
Поле Example Служит для записи правой части критерия
Поле Case При установке этого флажка в условии учитывается регистр символов
Поле Logical Служит для задания логической связи нескольких критериев
Кнопка Insert Вставка нового критерия
Кнопка Remove Удаление построенного критерия


Теперь познакомимся с допустимыми операциями для задания условия объединения.

Операции для задания условия объединения:

 

Операция Значение
= Равно
Like Подобно
== Точно соответствует
> Больше
< Меньше
>= Больше либо равно
<= Меньше либо равно
Is NULL Значение не определено
Between Задание интервала вхождение значения
In Задание списка значений

Пришло время многотабличных запросов. Начните создание нового запроса в Query Designer. Поместите в диалоговое окно Query Designer две таблицы: Group и Student. Выберите следующие поля для запроса во вкладке Fields: Student.number, Student.name, Student.ocenka, Group.group_n. Теперь щелкните по вкладке Join (Объединение).

С помощью средств данной вкладки можно настраивать условие объединения данных таблиц. Слева от имени поля во вкладке вы видите 2 кнопки. Самая левая кнопка позволяет изменить порядок следования выражений, если их несколько. С помощью второй кнопки можно модифицировать тип условия объединения. При щелчке на ней открывается окно Join Condition (Условие объединения). Это окно можно также открыть, щелкнув по кнопке Add Join (Добавить объединение) или дважды щекнув по линии, свяэывающей таблицы в области исходных данных.
С помощью окна Join Condition можно выбрать тип объединения и описать каждое условие.
Типы объединений:

 

Тип Характеристики
Inner Join (Внутреннее объединение) Включает только те записи из таблиц, которые отвечают условию объединения
Left outer Join (Левое внешнее объединение) Включает все записи из таблицы слева и те записи из таблиц, которые отвечают условию объединения
Right outer Join (Правое внешнее объединение) Включает все записи из таблицы справа и те записи из таблиц, которые отвечают условию объединения
Full Join (Полное внешнее объединение) Включает все записи из таблиц, причем если находятся записи, совпадающие по заданному условию объединения, то в результирующем наборе эти записи объединяются в одну


Тип объединения можно выбрать из раскрывающегося списка Type (Тип). При описании типов мы не сказали о декартовом произведении (Cartesian product). Оно представляет собой результат объединения, при котором отсутствует критерий объединения. В этом случае каждая запись из одной таблицы объединяется с каждой записью из другой таблицы.
Поля - участники объединения, выбираются из списков Field Name и Value (Значение). Для инвертирования логики критерия используется кнопка Not. Условия объединения,установленные на основе постоянных отношений между таблицами, нельзя модифицировать. Вы должны сначала удалить это условие, а потом задать его снова во вкладке Join. Удаление его не повлияет на постоянные отношения таблиц.



<== предыдущая лекция | следующая лекция ==>
УКАЖИТЕ НАЗНАЧЕНИЕ ФОРМ. ПРОКОММЕНТИРУЙТЕ ПРОЦЕСС СОЗДАНИЯ ЭКРАННЫХ ФОРМ РАЗЛИЧНЫМИ СПОСОБАМИ. | Группировка полей в запросе


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 5.001 сек.