20172

Методы, связанные с командой READ

Лекция

Информатика, кибернетика и программирование

В Visual FoxPro форма выводится на экран методом Show а для обновления данных нужно использовать метод Refresh следующим образом: Form1. Поля записываются только при перемещении показателя текущей записи 2Optimistic записи блокируются только при попытке записи данных. Другими словами представления позволяют пользователям сосредоточить внимание и возможно логически реструктурировать только ту часть базы данных которая их интересует и игнорировать остальные данные. Для скрытых данных обеспечивается автоматическая защита.

Русский

2013-07-25

57.5 KB

3 чел.

Методы, связанные с командой READ

Команда READ теперь встроена в конструкторы форм и меню.

После создания формы ее нужно только выполнять с помощью команды DO FORM. Все опции, которые раньше были связаны с командой READ, стали теперь методами формы. Команда READ, тем не менее, остается в Visual FoxPro для совместимости с предыдущими версиями. Ее можно также использовать в рамках объектно-ориентированного подхода,  употребив опцию EVENTS.

Опция ЕVENTS включает контроль за событиями. После этого управление остается на операторе READ и события обрабатываются до тех пор, пока в одном из них не встретится команда CLEAR EVENTS. Тогда выполнение продолжается с оператора, следующего за READ EVENTS.

Опишем реализацию в формах каждой из опций команды READ.

CYCLE: позволяет пользователю переключаться циклически по всем объектам формы, возвращаясь с последнего на первый. Нажатие Shift+Tab вызывает перемещение с первого на последний объект. При выполнении формы управления циклически перемещается между объектами до тех пор, пока не встретится оператор CLEAR EVENTS или свойство TerminateRead не будет  установлено в (.Т.).

ACTIVATE: служит для изменения активного окна. Подобное действие выполняется и методом Activate , который имеется у каждой формы. Процедура этого метода может определить, является ли форма активной, и убрать с нее ненужные объекты перед тем  как  команда REAL начнет следить за событиями.

Возвращаемое методом Activate значение игнорируется, поэтому нельзя определить была ли форма активизирована командой ACTIVATE EVENTS или другим способом. Пользователи обычно активизируют форму путем нажатия на ее пиктограмму или путем вызова метода формы Show. Таким образом, при различных способах активизации формы выполняются разные ее методы.

DEACTIVATE: выполняется при попытке перейти в другое окно. Вызываемая при этом процедура должна произвести различные проверки и возвратить логическое значение. Значение (.Т.) вызывает прекращение выполнения оператора READ.

Все объекты формы имеют свой метод Deactivate, который, однако, вызывается только при перемещении между окнами текущего приложения. Для того чтобы действительно деактивизировать форму, то есть удалить ее с экрана и из памяти , нужно вызвать метод  формы Release. А если вызвать метод Hide, который изменяет значение свойства формы Visible на (.F.), то форма исчезнет с экрана, но останется в памяти и ее можно будет вновь вывести на экран, установив Visible=(.Т.).

MODAL и WITH:  эти две команды работают вместе и определяют какие окна могут быть активизированы пользователем. Например, если открыто одно окно с использованием команды MODAL , то пользователь не сможет перейти в другое окно, нажав на него. Он должен будет выйти из текущего окна, вызвав его метод CLOSE или QUIT . Поэтому если нужно открыть несколько окон, их надо перечислить после фразы WITH.

Метод формы Show используется для одновременного открытия формы и определения возможности выхода из ее окна. Команда Form1.Show(0) открывает форму с возможностью перехода в другие окна, причем выполнение программы при этом продолжается.

Команда Form1.Show(1) открывает форму без возможности выхода: при этом пользователь не может переключиться в другое окно, а выполнение программы приостанавливается до закрытия формы.

Если аргумент метода Show опущен, то вместо него используется значение свойства формы WindowType.

Замечание. Аргумент метода Show перекрывает значение свойства WindowTipe, а значение свойства WindowTipe набора форм, в свою очередь, перекрывает свойства WindowTipe отдельных форм этого набора.

SHOW: В первых версиях FoxPro функция, указанная после READ SHOW, вызывалась при дальнейшем выполнении команды SHOW GETS и могла служить для перевывода полей ввода. В Visual FoxPro форма выводится на экран методом Show, а для обновления данных нужно использовать метод  Refresh следующим образом: Form1.Refresh

Эта команда вызывает перевывод всех объектов формы и значений полей ввода. Однако, если изменяется значение только одного объекта, можно не делать перевывод всей формы, поскольку это занимает слишком много времени. Лучше вызвать метод Refresh конкретного объекта, например : Form1.SumPrise.Refresh 

Формы в Visual FoxPro не имеют методов, аналогичных фразам WHEN и VALID , но соответствующие проверки можно поместить в метод Activate. Для предотвращения выполнения формы можно прямо в методе Activate выполнять команду FORM. RELEASE.

OBJECT: раньше эта фраза использовалась для определения объекта, который получал управление. Теперь для передачи управления любому объекту на экране следует использовать следующий формат команды: _CurObj = OBJNUM(LastName)

Это же действие выполняется методом SetFocus , который есть у всех объектов, допускающих взаимодействие с пользователем. Для перехода к любому объекту без клавиши Tab необходима следующая команда:  ThisForm.Spinner1.SetFocus

Эта команда передает управление объекту Spiner1.

TIMEOUT : ограничивает время выполнения команды READ при отсутствии действий пользователя. По истечении заданного времени выполнение команды READ прерывается.

Объекты Visual FoxPro  не имеют прямого эквивалента этой команды, но есть объект Timer, с помощью которого можно эмулировать  выполнение команды  TIMEOUT .

NOMOUSE: раньше эта опция применялась для запрещения перехода по полям с помощью мыши. Основным ее назначением было заставить пользователя вводить данные или делать выборы в определенной последовательности. Поскольку объектно-ориентированное программирование предусматривает свободу пользователя в управлении программой, эквивалента опции NOMOUSE в Visual FoxPro  нет.

SAVE: как и в случае с NOMOUSE эквивалента не имеет.

LOCK: при использовании этой фразы делается попытка заблокировать все записи, которые редактируются на экране. Объекты Visual FoxPro  имеют свойство BufferMode, определяющее когда следует блокировать записи. Возможные значения свойства приведены в таблице

COLOR SCHEME  и COLOR : свойства всей формы не позволяют определять ее палитру, но позволяют устанавливать цвета фона, изображения и заливки. С другой стороны, отдельные объекты поддерживают как цвета фона и изображения, так и палитру и источники цветов.

Формы в VFP не имеют методов, аналогичным фразам When и Valid , но соответствующие проверки можно поместить в метод Activate

OBJECT - эта опция использовалась для определения объекта, который получал управление. Теперь это действие выполняется методом SetFocus ( устанавливает фокус в элементе управления и весь ввод пользователя направляется в этот элемент управления, который есть у всех объектов, допускающих взаимодействие с пользователем.

Например: This form.Spinnes1.SetFocus эта команда передает управление текущей формы Spinnes1 

TIMEOUT -ограничивает выполнение READ при отсутствии действий пользователя. По истечении заданного времени выполнение READ прерывается. Объекты VFP не имеют прямого эквивалента этой команды, но есть объект Times, с помощью которого можно эмулировать выполнение  команды TIMEOUT  

NOMOUSE- эта опция раньше применялась для запрещения перехода по полям с помощью мыши. Так как объектно-ориентированное программирование  предусматривает свободу пользователя в управлении программой, эквивалента опции в VFP нет.

SAVE -ранее сохраняла все определения объектов ввода для использования в последующих командах READ. В VFP эквивалента нет.

LOCK- блокирование записей, которые редактируются на экране. Объекты VFP имеют свойство Buffer Mode , определяющие когда следует блокировать записи: значение функции= None блокируются все редактируемые записи, а поля записываются по мере их редактирования.

1-Pessimistic- блокировки записи происходит в начале редактирования любого ее поля. Поля записываются только при перемещении показателя текущей записи

2-Optimistic- записи блокируются только при попытке записи данных.

Создание и использование представлений.

Из данного множества таблиц реляционные выражения позволяют получить множество других, например путем соединения двух таблиц. Исходные таблицы называются базовыми таблицами, а таблицы, полученные из них путем выполнения каких-либо реляционных выражений, называются производными. Поэтому базовые таблицы существуют независимо, в то время как производные таблицы зависят от базовых. базовые таблицы, конечно, должны быть именованными (т.е. их имена указываются в операторах создания). Большинство производных таблиц, наоборот, неименованные. Однако реляционные системы обычно поддерживают один определенный вид производных таблиц, называемый представлением, которое имеет имя. Таким образом, представление – это именованная таблица, которая, в отличие от базовой, не может существовать сама по себе, а определяется в терминах одной или нескольких именованных таблиц (базовых таблиц или других представлений).

Преимущества представлений:

  1.  Представления позволяют разным пользователям различными способами просматривать одни и те же данные в одно и то же время. Другими словами, представления позволяют пользователям сосредоточить внимание и, возможно, логически реструктурировать только ту часть базы данных, которая их интересует, и игнорировать остальные данные.
  2.  Представления обеспечивают пользователей механизмом сокращений, или «макросов».  В СУБД представления играют роль, аналогичную роли роли макросов с системах программирования, а хорошо известные преимущества и возможности макросов характерны и для представлений. В частности, использование представлений не приводит к дополнительным затратам производительности на этапе выполнения приложений - небольшие затраты производительности наблюдаются только на этапе определения представлений.
  3.  Для скрытых данных обеспечивается автоматическая защита. Под скрытыми данными здесь понимают данные, которые не видны в определенном представлении. Таки образом, пользователи вынуждены получать доступ к базе данных через представления; это простой и эффективный механизм контроля доступа и аутентификации.

Практически все приложения, разрабатываемы в настоящее время, проектируются как многопользовательские. Это значит, что данное приложение либо сразу помещается на сетевой сервер, либо в ближайшем будущем должно быть доработано и перенесено с среду клиент/сервер. Проводимые Microsoft исследования показывают, что 65% всех приложений VFP будут в ближайшее время модернизироваться именно в этих целях. Независимо от перспектив использования данного приложения имеет смысл сразу же создавать его с учетом подобных требований. При построении многопользовательских приложений весьма важно создать представления, которые отвечают требованиям, предъявляемым к вводу и выводу данных.

Представления можно построить на основе как локальных, так и удаленных таблиц, а изменения, которые вносятся в него, можно перенести в таблицы, на основании которых построено представление. Разделение локальных и удаленных представлений служит лишь для указания на источник данных и создания поименованных соединений с определенными параметрами. Представления создают данические наборы данных. В представлении можно разрешить и только чтение данных, и их обновление. Представления сочетают в себе лучшие свойства, присущие запросам, с вохможностью прямого ввода данных в курсоры (курсоры являются виртуальными таблицами, сохраняемыми в оперативной памяти компьютера. Они строятся на основе таблицы или группы связанных таблиц).

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

  •  добавление в область описания данных формы таблицы и наследование постоянных отношений, созданных в области описания данных
  •  упорядочение курсоров таким образом, чтобы записи в них были отсортированы по ключу (тэгу) или по результатам вычисления выражения.

Если в форме вы используете представления, у вас появляются дополнительные возможности:

  •  выбор в таблице некоторой порции записей (фильтры)
  •  выбор некоторой порции записей на основе свойств данных в связанных ключах (объединение типов)
  •  контроль числа или процента записей, возвращаемых из набора данных
  •  обратная запись данных из представления в локальную или удаленную таблицу с возможностью управления тем, какие поля будут модифицированы
  •  сохранение определения представления в базе данных как некоторого выражения

Для создания локального представления можно выбрать одно из перечисленных средств:

  •  Команду CREATE LOCAL VIEW
  •  Средство View Designer (конструктор представлений)
  •  Мастер Local View Wizard

Удалить представление можно командами DELETE VIEW или DROP VIEW. Переименовать представление можно с помощью команды RENAME VIEW.

Типы представлений.

Многотабличные представления.

Предположим, необходимо разделить в б.д. все запииси о продажах на некоторое количество частей. Это может потребоваться в том случае, если вам необходимо (из соображений защиты информации), чтобы каждое торговое отделение могло вводить и просматривать информацию о продажах только своего региона, ане всех остальных. В подобной ситуации необходима область описания данных с возможностью выборки только некоторого набора записей. Реализовать это требование можно с помощью создания многотабличного представления, которое определяется командой Select с  соответствующим предложением Where.

SELECT * FROM sales WHERE customer.region=’Астрахань

Это вполне приемлемый подход для систем, в которых используются локальные представления. Для удаленных представлений такой подход послужит причиной заметного возрастания сетевого трафика. В случае больших наборов данных он практически неприемлем, если только вы не обеспечите соединений, способных пропускать значительные объемы данных.

Если поместить ограничения (в приведенном примере для регионов) в отдельные представления, то такой вариант будет работоспособен, но необходимо определить и хранить множество представлений – для каждого региона, где осуществляются торговые операции. Не самый лучший подход для работы с базами данных! В данном случае следует использовать параметризованные представления, которые мы рассмотрим позднее.

При создании многотабличного представления с набором установленных отношений указатель записи в нем перемещает и управляет записями точно так же, как в многотабличной области описания данных. Если добавляемая в представление таблица не имеет постоянных отношений, для определения соединения активизируется диалоговое окно, позволяющее определить необходимый тип соединения. В соединении, как правило, устанавливают отношения между первичным ключом в одной таблице и внешним ключом в другой. Значения общих полей сравниваются на основании условий соединения, и отбираются те записи, для которых они выполняются. Visual FoxPro поддерживает следующие условия соединения:

Inner joins (внутреннее соединение). Возвращаются только те записи из обеих таблиц, которые отвечают условиям сравнения двух полей в соединении.

Left outer joins (левое внешнее соединение). Возвращаются все записи из таблицы, находящейся слева от ключевого слова JOIN, и любые записи из второй таблицы, которые отвечают условиям сравнения двух полей.

Right outer joins (правое внешнее соединение). Возвращаются все записи из таблицы, находящейся справа от ключевого слова JOIN, и любые записи второй таблицы, которые отвечают условиям сравнения двух полей.

Full outer joins (полное внешнее соединение). Возвращаются все записи обеих таблиц, вне зависимости от того, соответствуют они условиям сравнения или нет.

Представления с параметрами.

С помощью параметризованных представлений можно определить помещаемые в представлении данные. В этих представлениях предложение Where содержит параметр ?<имя_поля>.

SELECT * FROM sales WHERE customer.region=?cregion

При выполнении этой команды появится диалоговое окно Параметры представления, в котором нужно указать значение для cregion. Кроме того, можно определить значение парметра представления, например, закрепив это значение за положением переключателя, либо за элементом списка, либо присвоив параметру значение в к-либо методе формы или методе объекта.

Параметризованные представления особенно ценны при создании на их основе отчетов. Из парметров можно построить произвольное выражение, тем самым предоставив будущим пользователям полный контроль над возвращаемым набором данных.

Представления с обновлением данных.

В конструкторе представлений можно определять методы, используемые для обновления существующих и внесения новых записей. Для этого служит вкладка Update Criteria. Любое из полей в списке Field name можно сделать доступным только для чтения посредством удаления флажка, расположенного перед именем поля в столбце с пиктограммой карандаша. Кроме того, можно указать ключевые поля, однозначно идентифицирующие каждую строку представления. Для этого необходимо поместить флажок в столбец с пиктограммой ключа. Если определить поле как ключевое, то аноситьв него изменения можно только при создании новых записей. Для уже существующих записей модифицировать значения в этих полях будет невозможно.

Опция Send SQL updates является основной для разрешения обновления данных в представлении.


 

А также другие работы, которые могут Вас заинтересовать

12140. Изучение схемы АВР асинхронных электродвигателей 336 KB
  Изучение схемы АВР асинхронных электродвигателей. Цель работы: По принципиальной схеме составить монтажную схему. Собрать ее на действующем стенде включить в работу и изучить все возможные варианты. План проведения работы.
12141. Исследование схемы управления электродвигателем постоян-ного тока на тиристерных преобразователях 668 KB
  ЛАБОРАТОРНАЯ РАБОТА 2. Тема: Исследование схемы управления электродвигателем постоянного тока на тиристерных преобразователях. Цель работы: Изучение работы тиристорного преобразователя для электродвигателя постоянного тока с регулируемой частотой враще
12142. Исследование схем автоматического пуска электродвигателя в функции времени 324 KB
  Исследование схем автоматического пуска электродвигателя в функции времени. Цель работы: По принципиальной схеме составить монтажную схему собрать схему на действующем стенде включить в работу и изучить возможные варианты
12143. Снятие и построение нагрузочных диаграмм 477.5 KB
  ЛАБОРАТОРНАЯ РАБОТА 4. Тема: Снятие и построение нагрузочных диаграмм. Цель работы: Изучение режимов работы электрических двигателей и получение опытных данных для построения нагрузочных диаграмм и поверка мощности приводного двигателя. План про
12144. Изучение принципиальной схемы управления электроприводом грузового лифта 175 KB
  ЛАБОРАТОРНАЯ РАБОТА 5. Тема: Изучение принципиальной схемы управления электроприводом грузового лифта. Цель работы: Изучить работу принципиальной схемы управления электроприводом грузового лифта. Краткие теоретические сведения В различных отрасл
12145. Изучение схемы управления электроприводом вентиляционной системы. 374 KB
  ЛАБОРАТОРНАЯ РАБОТА 6. Тема: Изучение схемы управления электроприводом вентиляционной системы. Цель работы: По принципиальной схеме составить монтажную схему. Собрать ее на действующем стенде включить в работу и изучить все возможные варианты. Вентиляц...
12146. Системы численных вычислений. Основы работы в среде Matlab. 906.42 KB
  Отчет по выполнению лабораторной работы № 26 Системы численных вычислений. Основы работы в среде Matlab. Цель работы: научиться проводить прямые вычисления и создавать Мфайлы в пакете автоматизации математических расчетов MATLAB.
12147. Системы численных вычислений. Основы работы в среде Octave и Scilab 1 MB
  Отчет по выполнению лабораторной работы №27 Системы численных вычислений. Основы работы в среде Octave и Scilab. Цель работы: научиться проводить прямые вычисления в пакетах автоматизации математических расчетов Octave и Scilab....