Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Использование выражений в UPDA ТЕ




В предложении SET команды UPDATE можно использовать скалярные вы­ражения. указывающие cпособ изменения значений поля в отличие от предло­жения VALUES команды INSERT, в котором нельзя использовать выражения. Это весьма полезная характеристика. Предположим, решено удвоить комисси­онные продавцов. Можно использовать следующее выражение:

UPDATE Salespeople

SET comm =comm*2;

 

Применение UPDAТЕ к NULL-значениям

Таким образом, если нужно установить все рейтинги покупателей из Лондона (city = 'London') равными NULL-значению, необходимо ввести следующее предложение:

UPDATE Customers

SET rating = NULL

WHERE city = 'London';

В результате выполнения этой команды значения рейтинга для всех покупателей из Лондона станут неопределенными (имеющими NULL-значение).

Использование подзапросов с командами обновления

Использование подзапросов в INSERT

Предположим, есть таблица с именем SJpeople, определения столбцов кото­рой полностью соответствуют определениям таблицы Salespeople. Известно, как заполнять таблицу, подобную этой, для всех покупателей (Customers), располо­женных (city) в San Jose:

INSERT INTO Sjpeople

SELECT *

FROM Salespeople

WHERE city = 'San Jose';

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

INSERT INTO Sjpeople

SELECT*

FROM Salespeople

WHERE snum = ANY

(SELECT snum

FROM Customers

WHERE city= 'San Jose');

Оба запроса в этой команде действуют так, будто они не являются частью выражения INSERT. Подзапрос отыскивает все строки для покупателей в San Jose и создает множество значений поля snum. Внешний запрос выбирает те строки из таблицы Salespeople, для которых найдены совпадающие значения snum.

 

Использование подзапросов, основанных на таблицах внешних запросов.

Предположим, существует таблица Samecity, в которой хранятся сведения о продавцах (salespeople), имеющих покупателей в их же городах (cinch). Можно заполнить таблицу, применяя связанные подзапросы:

INSERT INTO Samecity

SELECT*

FROM Salespeople outer

WHERE city IN

(SELECT city

FROM Customers inner

WHERE inner.snum = outer.snum);

Ни таблицу Salespeople, ни таблицу Samecity нельзя использовать во внешних или внутренних запросах для INSERT. Другой пример: предположим, назначено вознаграждение для каждого продавца, имеющего максимальный заказ на каж­дый день. Сведения о них можно формировать в таблице Bonus, содержащей значение поля snum для продавца, дату (odate) и объем заказа (amount, amt). Эту таблицу можно заполнить информацией, хранящейся в таблице Orders, ис­пользуя следующую команду:

INSERT INTO Воnus

SELECT snum, odate, amt

FROM Orders a

WHERE amt=

(SELECT MAX (amt)

FROM Orders b

WHERE a.odate = b.odate)

 

 

Использование подзапросов с DELETE

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

DELETE

FROM Customers

WHERE snum = ANY

(SELECT snum

FROM Salespeople

WHERE city = 'London');

Можно использовать связанные подзапросы. Они отличаются от применяемых с INSERT тем, что действительно базируются на строках-кандидатах из таблицы, на которую воздействует команда, а не на запросе для некоторой другой таблицы.

DELETE FROM Salespeople

WHERE EXISTS

(SELECT*

FROM Customers

WHERE rating = 100

AND Salespeople.snum = Customers.anum);

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

DELETE FROM Salespeople

WHERE 100 IN

          (SELECT rating

FROM Customers

WHERE Salespeople.snum = Customers.snum);

Запрос находит все рейтинги покупателей каждого продавца и удаляет про­давца, имеющего покупателя с рейтингом 100.

Использование подзапросов с UPDAТЕ

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

UPDATE Salespeople

SET comm = comm + .01

WHERE 2 <=

(SELECT COUNT (cnum)

FROM Customers

WHERE Customers.snum = Salespeople.snum);

Приведем модификацию последнего примера для раздела, в котором рассматривалась команда DELЕТE. Здесь уменьшаются комиссионные для продавцов, лучивших минимальные заказы:

UPDATE Salespeople

SET comm = comm - .01

WHERE snum IN

 (SELECT snum WHERE amt=

 

FROM Orders a

 (SELECT MIN (amt)

FROM Orders b

WHERE a.odata=b.odate))

 

Задание

В лабораторной работе реализовать следующие механизмы языка структурированных запросов:

1. Добавление записи в таблицу БД;

2. Механизм удаления записи по условию;

3. Механизм удаления записи по условию, использующему вложенный запрос;

4. Внесение изменений в таблицу БД по условию;

5. Внесение изменений в таблицу БД по условию, использующему вложенный запрос.

 

Содержание отчета

q наименование лабораторной работы;

q цель работы;

q протокол работы команд (с использованием всех механизмов, описанных ниже).

q вывод.

 

Контрольные вопросы

  

1. Объясните механизм удаления записи по условию, использующему вложенный запрос;

2. Объясните механизм внесения изменений в таблицу БД по условию, использующему вложенный запрос.

 

 

Лабораторная работа №6

 

СОЗДАНИЕ И МОДЕРНИЗАЦИЯ СТРУКТУРЫ БАЗЫ ДАННЫХ ЧЕРЕЗ Project Manager

 

Цель работы: моделирование профессиональных навыков работы в режиме проектирования автоматизированной системы

 

Пояснения к работе

 

Если вы разрабатываете пользовательское приложение, обязательно создавайте БД, используя Project Manager.

В Project Manager выберите вкладку Data, затем в списке пункт Database. Нажмите кнопку New. Откроется Конструктор БД, который показан на рис. 1.

 

Вновь созданная БД пуста и не содержит никаких таблиц и других объектов.

 

Рис.1

 

В таблице 1 приведены команды и функции, которые вы можете использовать для программного управления БД и их объектами.

Вы можете включить таблицы в БД, создав их внутри открытой БД или добавив туда уже существующие таблицы.

Как добавить существующую таблицу в БД? В Project Manager выберите пункт Tables из вкладки All или Data, затем выполните команду Add.

 

Таблица1

ADATDBASE() CREATE VIEW MODIFY CONNECTION
ADBOBJECTS() DBC() MODIFY DATABASE
ADD TABLE DBGETPROP() MODIFY PROCEDURE
ALTER TABLE DBSETPROP() MODIFY STRUCTURE
APPEND PROCEDURES DELETE CONNECTION MODIFY VIEW
CLOSE DATABASE DELETE DATABASE OPEN DATABASE
COPY PROCEDURES DELETE VIEW PACK DATABASE
CREATE MODIFY DISPLAY DATABASE REMOVE TABLE
CREATE DATABASE INDBC() SET DATABASE
CREATE SQL VIEW LIST DATABASE VALIDATE DATABASE
CREATE TABLE    

 

Чтобы сделать таблицу частью БД, необходимо явно включить ее в БД. Изменение структуры свободной таблицы не вносит ее автоматически в БД, даже если сделать это при открытой БД с помощью команды MODIFY STRUCTURE.

Не забудьте, что вы можете ассоциировать таблицу только с одной БД. Если данные из какой-то таблицы необходимо использовать в нескольких БД, для исключения дублирования информации наиболее простой путь – не включать эту таблицу ни в какую БД, а оставить ее свободной. Данные из существующего файла DBF можно использовать не включая его в БД. В то же время не представляет труда использовать информацию и из таблицы, расположенной в другой БД.

Например, если вы хотите просмотреть таблицу Salesman из БД Auto_Store, выполните следующие команды.

 

USE Auto_Store! Salesman


BROWSE

 

Вы можете удалить таблицу из БД интерактивно или с помощью команды REMOVE TABLE. При удалении таблицы из БД вы можете и физически удалить файл таблицы с диска. В Project Manager выберите имя таблицы и нажмите кнопку Remove. Если вы работаете в Конструкторе БД, выделите имя таблицы и выберите команду Remove из меню Database.

Удалить БД с диска можно с помощью Project Manager или командой DELETE DATABASE.

Для удаления БД с диска всегда используйте один из вышеуказанных методов. Удаление БД с помощью диспетчера проектов или по команде DELETE DATABASE автоматически обновляет обратные связи в файлах таблиц БД. Если вы удалите БД с помощью какой-нибудь утилиты работы с файлами, то в таблицах, принадлежащих БД, останутся ссылки на уже несуществующую БД, и вы не сможете их использовать.

Команда DELETE DATABASE не удаляет файлы таблиц с диска, а только помечает их как свободные. Если вы хотите одновременно с БД удалить и файлы таблиц, включите опцию DELETE DATABASE в команду DELETE DATABASE.

В следующем примере открываются три БД, первая объявляется текущей, и ее имя отображается на экране с помощью функции DBC():

 

OPEN DATABASE            Auto_Store

OPEN DATABASE            Connect_Data

OPEN DATABASE            Count_Data

SET DATABASE                TO Auto_Store

? DBC ()

 

Закрыть БД можно в Project Manager или командой CLOSE DATABASE. В Project Manager выделите имя БД и выберите команду Close. В следующем примере закрывается БД Auto_Store:

 

SET DATABASE TO Auto_Store

CLOSE DATABASE

 

Оба указанных способа закрывают БД автоматически. Еще один способ закрыть БД и другие открытые объекты – включить предложение ALL в команду CLOSE.

Выполнение команды CLOSE DATABASE в окне Command не приведет к закрытию БД, если она была открыта одним из следующих способов:

· в Project Manager в расширенном режиме просмотра содержимого БД;

· формой, запущенной в собственной Data Session.

В этих случаях БД остается открытой до тех пор, пока она не будет закрыта в Project Manager или пока не будет закрыта соответствующая форма.

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

Например, если таблица Model ассоциирована с БД Auto_Store, приведенные ниже команды всегда найдут таблицу Model в БД.

 

OPEN DATABASE Auto_Store

ADD TABLE C:\MYPROJECT\MODEL.DBF

USE Model

 

Когда вы создаете БД, Visual FoxPro создает и открывает для использования файл с именем БД и расширением DBC (DataBaseContainer). В этом файле хранится вся информация о БД, включая имена файлов и объектов, ассоциированных с ней. Сами объекты верхнего уровня типа таблиц или полей в файле DBC не хранятся. Хранятся только пути к файлам таблиц.

В Конструкторе БД панель инструментов Database можно использовать для создания новой таблицы, добавления существующей таблицы в БД, удаления таблиц из БД, изменения структуры таблицы. Здесь же вы можете редактировать хранимые в базе процедуры.

Файл БД содержит записи для каждой таблицы, представления, индекса, индексного тега, установленных отношений и связей, ассоциированных с БД; а также записи для каждого поля таблицы или представления, имеющего расширение атрибуты. В файле хранится и запись, содержащая все хранимые процедуры БД.

Конструктор БД является концептуальным представлением схемы БД, однако вам может потребоваться просмотреть содержимое файла БД непосредственно. Можно сделать это, выполнив команду USE для файла DBC неоткрытой БД. В следующем примере открывается окно просмотра, куда выводится содержимое файла БД Auto_Store в табличном виде.

 

CLOSE DATABASE Auto_Store

USE AUTO_STORE.DBC EXCLUSIVE

BROWSE

 

Не используйте команду BROWSE для модификации файла БД, если вы не знакомы со структурой файла DBC. Любая ошибка при изменении файла DBC может разрушить БД и привести к потере информации.

Для изменения структуры файла DBC вы должны открыть его для монопольного использования.

Как добавить поле к файлу DBC?

1. Откройте файл DBC для монопольного доступа командой USE.

2. Выполните команду MODIFY STRUCTURE.

В следующем примере открывается Конструктор таблиц, где вы можете добавить поле в файл AUTO_STORE.DBC EXCLUSIVE:

 

USE AUTO_STORE.DBC EXCLUSIVE

MODIFY STRUCTURE

 

При добавлении нового поля в файл БД начинайте имя этого поля с символов «U_» для обозначения поля пользователя. Это поможет вам избежать конфликтов с любыми возможными изменениями структуры файла DBC.

Не изменяйте системные поля в файле DBC. Любые такие изменения могут нарушить целостность БД.

Вы можете проверить целостность БД с помощью команды VALIDATE DATABASE.

В следующем примере файл БД Auto_Store проверяется на целостность:

 

OPEN DATABASE Auto_Store EXCLUSIVE

VALIDATE DATABASE.

 

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

 

 

Задание

В лабораторной работе реализовать описанные выше механизмы создания проекта и баз данных в проекте:

q создать свободные таблицы;

q создать контейнер таблиц:

q добавить в контейнер свободные таблицы;

q удалить базы данных из контейнера;

q удалить базы данных с диска.

 

 

Содержание отчета

q наименование лабораторной работы;

q цель работы;

q протокол работы команд (с использованием всех механизмов, описанных ниже).

q вывод.

 

Контрольные вопросы

 

1. Что такое «свободная таблица?»

2. Что такое «контейнер таблиц?»

3. Какие данные хранятся в «DataBaseContainer?”

4. Когда база закрывается автоматически?

5. Как проверить целостность базы данных?

6. Назовите функции программного управления базой данных.

 

 

Лабораторная работа №7

Конструктор меню

Цель работы: получить начальные навыки работы при создании меню с помощью конструктора в среде СУБД Visual FoxPro.

 

Пояснения к работе

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

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

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

· Старайтесь выделять функционально связанные группы команд с помощью разделителей.

· Избегайте чрезмерно длинных списков команд в меню, делите такие списки на подменю по функциональным признакам. Во всяком случае, категорически избегайте создавать в меню списки команд, не умещающиеся на экране.

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

 

Для разработки меню в Visual FoxPro проще всего использовать Конструктор меню (Menu Designer). В проекте выберем вкладку Other, найдем заголовок Menus и дадим команду New. На экране появится окно Конструктора меню, внешний вид которого приведен на рис. 1. На этом же рисунке поясняются основные элементы этого Конструктора. Обратите внимание, что Конструктор меню принципиально отличается от других визуальных средств проектирования Visual FoxPro. После того как мы опишем с его помощью меню, необходимо сгенерировать программу. Файл с этой программой будет иметь расширение MPR, а файл после компиляции — МРХ. Этот файл и следует запускать для работы с созданным меню. Недаром раньше такой инструмент программиста так и назывался — Генератор. Для генерации программы в меню Menu необходимо выбрать команду Generate.

Запишем заголовки пользовательского меню в столбце Prompt. Если после выбора меню на экране должен появиться список команд, выберем в столбце Result пункт Submenu и щелкнем на появившейся справа кнопке Create. Мы окажемся на следующем уровне меню, где запишем заголовки команд, входящих в это подменю. Если структура нашего меню предусматривает еще один уровень вложения, повторите указанные действия. Для перехода с уровня подменю на верхний уровень необходимо выбрать его из комбинированного списка Menu Level. Если вы хотите выделить группы команд, поместите в столбце Prompt в строке, разделяющей группы команд меню, знаки \-. Вы всегда можете проверить, как визуально будет выглядеть ваше меню на экране, нажав клавишу Preview.

 

 

Рис. 1

Вы можете регулировать доступ к тем или иным командам меню с помощью поля проверки Skip For, находящегося в диалоговом окне Prompt Options. Если вы щелкнете на этом поле, появится уже знакомое вам окно Построителя выражения, в котором можно сформировать условие доступа к этой команде меню. Если условие будет равно .F., команда будет доступна, если .Т. — недоступна. Наиболее часто эта возможность используется для регулирования доступа различных пользователей прикладной программы к тем или иным ее функциям.

 

 

 

Рис.2

 

В связи с тем, что Visual FoxPro поддерживает редактирование на месте OLE-объектов, с помощью поля проверки Negotiate мы можем дляменюверхнего уровня указать, где меню будет располагаться после активизации OLE-сервера. По умолчанию действует установка None, — меню убирается при редактировании OLE-объекта.

Для пояснения назначения той или иной команды меню с помощью поля проверки Message можно задать текст, который будет появляться в строке состояния. Для задания такого текста используется Построитель выражения. Если вы непосредственно набираете текст, не забудьте поместить его в кавычки.

В окне Prompt Options осталось еще одно поле проверки — Pad Name, о котором можно было бы ничего и не говорить, если бы мы не использовали русские заголовки для меню. При проектировании меню Конструктор автоматически присваивает имена меню на основании их заголовков.

Для выполнения каких-либо действий при выборе пользователем команд меню необходимо в колонке Result для каждой команды меню назначить команду Visual FoxPro, функцию или процедуру. Для назначения команды Visual FoxPro в столбце Result выберите пункт Command и наберите соответствующую команду текстовом поле справа. Например, DO Log_user. Если указанная в этой команде процедура находится в блоке Cleanup Конструктора меню (о нем мы расскажем чуть позднее), то команду следует записать в виде: DO Log_user IN Main, где — Main это имя файла меню.

Мы можем задать при выборе команды меню выполнение одной процедуры для меню, имеющего подменю. Для этого все команды меню должны в колонке Result иметь пункт Ваг#, который не предусматривает привязки к команде какого-то действия. В списке Menu Level выберем соответствующий уровень меню. Из меню View Visual FoxPro выберем команду Menu Options, после чего на экране появится одноименное диалоговое окно. Нажмем кнопку Edit и наберем код в соответствии с приведенным ниже шаблоном:

<Код, выполняемый при выборе любой из команд>

DO CASE

CASE BAR () = 1

<Код, выполняемый для первой команды в меню>

CASE BAR () = 2

< Код, выполняемый для второй команды в меню>

. . .ENDCASE

 



Задание

В лабораторной работе создать меню для выбранной системы согласно постановке задачи. Выполнить все действия по созданию меню согласно описанным выше механизмам.

 

Содержание отчета

q наименование лабораторной работы;

q цель работы;

q постановка задачи;

q структура меню;

q протокол работы команд (с использованием всех механизмов, описанных ниже).

q вывод.

Контрольные вопросы

1. В чём заключается основное назначение меню?

2. Какие требования к заголовку меню?

3. Чему должна соответствовать структура меню?

4. Как выделяются функционально связанные группы команд?

5. Для чего используются горячие клавиши?

 

                      

                              Лабораторная работа № 8

Создание нового набора форм

 

Цель работы: получить навыки работы по разработке пользовательского интерфейса с помощью визуальных средств в среде СУБД Visual FoxPro.

 

Пояснения к работе

Начнем с систематизации данных о способах создания новой формы в Visual FoxPro. Таких способов достаточно много:

· Использование Мастера форм . Это эффективный способ создания простых форм или «заготовок» для более сложных форм.

· Выбор команды New из меню File главного меню Visual FoxPro. В открывшемся диалоговом окне New необходимо щелкнуть на кнопке Form.

· Выполнение команды CREATE FORM.

· В Project Manager выделение пункта Form и выбор New.

· Независимо от выбранного способа загружается Конструктор формы. При этом в главном меню Visual FoxPro появляется меню Form:

· New property — позволяет добавить свое свойство для создаваемой формы.

· New method — позволяет добавить свой метод для создаваемой формы.

· Edit Property/Method — позволяет удалить добавленные свойства и методы из описания формы или изменить комментарий.

· Include File — позволяет определить файл, содержащий директивы компилятора.

· Create Form Set — создает набор форм — объект, который будетявляться контейнером по отношению к нескольким формам и панелям инструментов.

· Remove Form Set — удаляет набор форм, если он создан.

· Add New Form — позволяет добавить форму в набор форм.

· Remove Form — удаляет форму из набора форм.

· Quick Form — запускает Построитель формы (Form Builder), c помощью которого можно быстро создать простую форму для работы с данными из одной таблицы и в последующем использовать как заготовку в Конструкторе формы. Run Form — запускает разрабатываемую форму.

Панель инструментов Form Controls позволяет включать в разрабатываемую или проектируемую форму тот или иной элемент управления.

 

 

Рис. 1

 

Перед тем как вы начнете разрабатывать формы для своего приложения, не поленитесь заглянуть в диалоговое окно Options меню Tools (рис1). Выберите вкладку Forms и установите на ней требуемые значения для расположенных там параметров. Для облегчения расположения элементов управления на форме включите вывод координатной сетки. Наиболее удобный шаг координатной сетки — от 6 до 10. В качестве единицы измерения установите пикселы — Pixels. В опции Maximum Design Area установите разрешение 640 х 480, — это означает, что разработанная вами форма наверняка поместится на экране, имеющем стандартное разрешение VGA.

Нужные значения свойств можно установить в окне Properties: «All», «Data», «Methods», «Layout», «Other». Элементы окна Properties показаны на рис..

Вкладка «All» содержит все элементы, включенные в остальные разделы окна. Убедимся с помощью окна Properties, что форма имеет следующие свойства:AutoCenter = .Т. — определяем автоматическое центрирование объекта Form;

 

BackColor = RGB(176,176,176) — задаем цвет фона;

Caption = Прием заказов — задаем текст, отображаемый в названии объекта;

Closable = .F. — ликвидируем возможность закрытия объекта Form, двойным щелчком кнопки управляющего меню, или выбора в этом меню команды Close;

Height = 300 — задаем ширину объекта на экране;

Icon = "c:\mybook\sample\netl3.ico" — задаем значок, который отображается на этапе выполнения для объекта Form при его свертывании;

MaxButton = .F. — ликвидируем доступ к кнопке Maximize;

MinButton = .F. — ликвидируем доступ к кнопке Minimize;

ShowTips = .Т. — определяем возможность вывода подсказки для элементов управления заданного объекта;

Width = 540 — задаем ширину объекта.

 

 

Рис. 2

 

Следующим этапом мы включаем необходимые элементы управления, такие как Label, Text Box, Command Button, Combo Box, Shape, и определяем уже для вновь созданных элементов их свойства.

 

В код события Click для кнопки, например, Com1 запишем:

GO TOP

ThisForm.mygol.Comi.Enabled=.F.

ThisForm.mygol.Com2.Enabled=.F.

ThisForm.mygol.Com4.Enabled=.T.

ThisForm.mygol.Com5.Enabled=.T.

ThisForm.mygol.MyRefresh

IF BOF()=.F.

В код события Click для кнопки Соm, например, 2 запишем:

DO FORM Find_ord.scx

В код события Click для кнопки, например, Соm3 запишем:

IF EOF()=.F.

ThisForm.mygol.Coml.Enabled=.T.

This Form.mygol.Com2.Enabled=.T.

SKIP 1

IF EOF()=.T.

ThisForm.mygol.Com4.Enabled=.F. ThisForm.mygol.Com5.Enabled=.F.

GO BOTTOM

ENDIF

ELSE

ThisForm.mygol.Com4.Enabled=.F.

This Form.mygol.Com5.Enabled=.F.

GO BOTTOM

ENDIF

ThisForm.mygol.MyRefresh

 

В код события Click для кнопки, например, Соm3 запишем:

Answer_d = MESSAGEBOX("Удалить данную запись?",4+32+256, "Вопрос")

IF Answer_d=6

DELETE

Del_=1

SKIP 1

IF EOF ()=.T.

GO BOTTOM

ENDIF

MyUpdate=l

ThisForm.mygol.Com8.Enabled=.T.

This Form.mygol.Com9.Enabled=.Т.

This Form.mygol.MyRefresh

ENDIF

 



Задание

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

 

 

                                                

Содержание отчета

q наименование лабораторной работы;

q цель работы;

q формы и их элементы;

q обработчики элементов управления;

q протокол работы команд (с использованием всех механизмов, описанных ниже).

q вывод.

 

Контрольные вопросы

 

1. Для каких целей используются элементы управления?

2. Назовите способы создания экранной формы.

3. Какие действия нужно вы полнить для размещения элемента на форме?

4. Как сделать компонент активным (пассивным)?

5. Назовите два способа задания свойств компоненту.

6. Как удалить компонент с формы?

7. Как установить на форме вспомогательную сетку?

 

 

Лабораторная работа № 9










Последнее изменение этой страницы: 2018-05-29; просмотров: 543.

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