Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Горев “Эффективная работа с СУБД”.pdf
Скачиваний:
208
Добавлен:
28.06.2014
Размер:
4.71 Mб
Скачать

converted to PDF by HupBaH9I

В контекстном меню, приведенном на рис. П.1.3, вы найдете еще две новые команды: Comment и Uncomment. Эти команды позволяют мгновенно пометить как комментарий выделенный фрагмент кода, который не нужно в данный момент выполнять, и, наоборот, убрать установленные ранее символы комментария. Чрезвычайно полезная возможность в период отладки программы.

Создание базы данных

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

Рис. П.1.5.

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

важным обстоятельством является возможность выбора этого класса из библиотеки разработчика. Такая возможность существенно облегчает процесс разработки пользовательского интерфейса. Новая вкладка Table позволяет быстро перейти к установке правил проверки и триггеров на уровне таблицы и записи.

Работа с данными

converted to PDF by HupBaH9I

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

Эти возможности основываются на расширенном синтаксисе команды SELECT-SQL:

SELECT [ALL | DISTINCT] [TOP nExpression [PERCENT]]

[Alias.] Select_Item [AS Column_Name]

[, [Alias.] Select_Item [AS Column_Name] ...] FROM [FORCE]

[DatabaseName!]Table [Local_Alias]

[[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN

DatabaseName!]Table [Local_Alias] [ON JoinCondition]]

[[INTO Destination] | [TO FILE FileName [ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN]] [PREFERENCE PreferenceName]

[NOCONSOLE]

[PLAIN]

[NOWAIT]

[WHERE JoinCondition [AND JoinCondition ...] [AND | OR FilterCondition [AND | OR FilterCondition

...]]]

[GROUP BY GroupColumn [, GroupColumn ...]] [HAVING FilterCondition]

[UNION [ALL] SELECTCommand]

[ORDER BY Order_Item [ASC | DESC] [, Order_Item [ASC | DESC] ...]]

Опция INTO Destination при направлении результата запроса в курсор получила новое

предложение

CURSOR CursorName [NOFILTER]

Использование опции NOFILTER позволяет облегчить создание последовательных запросов,

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

Используя Конструктор представления можно указать для представления такие же расширенные свойства, как ранее были возможны только для таблицы (формат, маска ввода и т.

д.).

Расширение возможностей технологии клиент-сервер

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

Первое, что бросается в глаза - это более глубоко интегрированный в Администратор ODBC Конструктор соединения (Connection Designer). Он также обеспечивает возможность установки дополнительных свойств для оптимизации соединений.

Для повышения гибкости работы с внешним сервером Visual FoxPro 5.0 приобрел новый элемент работы с данными - Offline Views - независимые представления. Что это такое? Это представления, которые после получения данных могут использоваться самостоятельно, в отрыве от источника данных, и при необходимости обновлять данные в источнике на основе выполненных пользователями изменений.

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

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

Для получения независимого представления на основе существующего откройте соответствующую БД и используйте функцию

converted to PDF by HupBaH9I

CREATEOFFLINE(ViewName [, cPath])

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

Открыть и работать с данными в независимом представлении можно, используя команду

USE [[DatabaseName.]Table | SQLViewName | ?] [IN nWorkArea | cTableAlias]

[ONLINE]

[ADMIN]

[AGAIN]

[NOREQUERY [nDataSessionNumber]] [NODATA]

[INDEX IndexFileList | ?

[ORDER [nIndexNumber | IDXFileName | [TAG] TagName [OF CDXFileName] [ASCENDING | DESCENDING]]]]

[ALIAS cTableAlias] [EXCLUSIVE] [SHARED] [NOUPDATE]

Новая опция ADMIN позволяет просмотреть все выполненные изменения и при необходимости отменить какие-либо изменения.

Опция ONLINE используется для переноса изменений, выполненных в независимом представлении на БД сервера.

Для соединения независимого представления с БД сервера и перехода в режим работы обычного представления выполните функцию

DROPOFFLINE(cViewName)

Построение пользовательского интерфейса

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

Конструктора формы коснулись следующие улучшения:

Поддерживается как однодокументный (SDI), так и многодокументный (MDI) интерфейс.

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

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

Работая в окне Properties, вы можете переключать активные элементы управления нажатием клавиш Tab, PgDn, PgUp, Home и End совместно с клавишей Ctrl. Без клавиши Ctrl эти клавиши помогут вам быстро находить требуемые свойства в списке.

Многие диалоговые окна остаются на экране и облегчают тем самым множественный выбор, не требуя многократного вызова.

На стандартной панели инструментов новая кнопка Design, наряду с уже существовавшей в третьей версии кнопкой Run, позволяет быстро переключаться между режимом работы с формой в режим проектирования и обратно.

Вновой версии Visual FoxPro при создании нового файла меню вам будет предложен выбор между созданием привычного меню и контекстного меню (shortcut menu), вызываемого при нажатии правой кнопки мыши на определенном элементе управления. Для этого достаточно для

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

DO edtshort.mpr

converted to PDF by HupBaH9I

В Конструкторе меню появилась новая кнопка Insert Bar, которая позволяет вывести диалоговое окно со списком стандартных команд главного меню Visual FoxPro и разместить нужную команду в вашем меню. Теперь не придется искать в документации мудреное название команды Copy из меню Edit, если вы решили предоставить пользователю возможность копировать данные.

Значительно расширен набор примеров (Solutions), в которых показано, как можно наиболее эффективно использовать преимущества Visual FoxPro при решении конкретных задач, с которыми программист сталкивается при работе над пользовательским приложением. Эти примеры можно использовать как отдельные компоненты вашего будущего приложения.

Расширение функций OLE

Основная новость здесь - Visual FoxPro стал OLE-сервером. Таким образом, другие приложения, поддерживающие стандарт OLE 2.0, могут использовать объекты Visual FoxPro для расширения своей функциональности. Для этих целей вы можете создать как out-of-process (EXE), так и in-process (DLL) сервер.

В Visual FoxPro 5.0 доступ к объектам выполняется, как и в подавляющем большинстве других OLE-серверов, с помощью объекта верхнего уровня Application. В табл. П.1.1 перечислены его свойства, а в табл. П.1.2 - методы.

Таблица П.1.1. Свойства объекта Application

Свойство

Параметры

Описание

ActiveForm.Property [ =

Property -

Обеспечивает ссылку

Setting]

свойство формы

на активную форму

 

 

или объект _SCREEN

ActiveForm.Method

Setting -

 

 

значение

 

 

свойства Method

 

 

- метод формы

 

AutoYield [ = lExpr]

lExpr - по

Определяет способ

 

умолчанию

обработки событий

 

равен .T., что

Windows

 

предусматривает

 

 

приоритет

 

 

событий

 

 

Windows.

 

 

Значение .F.

 

 

предотвращает

 

 

прерывание

 

 

выполнения

 

 

кода Visual

 

 

FoxPro. При этом

 

 

события

 

 

Windows

 

 

ставятся в

 

 

очередь

 

Caption [ = cText]

cText - текст

Определяет заголовок

 

заголовка

окна приложения

DefaultFilePath [ = cPath]

cPath -

Определяет папку по

 

обозначение

умолчанию для

 

устройства,

приложения

 

папки или пути

 

FullName

 

Определяет путь и

 

 

имя файла для

 

 

запуска копии Visual

 

 

FoxPro

Height [ = nHeight]

nHeight - высота Определяет высоту

 

окна

окна приложения

 

приложения

 

Left [ = nDist]

nDist -

Определяет

 

расстояние от

расположение окна

 

левого края

приложения с левого

 

 

converted to PDF by HupBaH9I

 

 

края

Name [ = cName]

cName - имя

Задает имя объекта

 

объекта

для ссылки в коде

 

 

программы

OLERequestPendingTimeout nMilliseconds -

Определяет задержку

[ = nMilliseconds]

величина

времени, которая

 

задержки в

происходит перед

 

миллисекундах.

появлением

 

По умолчанию

сообщения о том, что

 

равна 5000 мс.

система занята в

 

Если параметр

процессе выполнения

 

равен 0,

запроса OLE

 

сообщение не

Automation, если

 

появляется

пользователь

 

 

использует

 

 

клавиатуру или мышь

OLEServerBusyRaiseError [

lExpression - по

Определяет

= lExpression]

умолчанию

появление сообщения

 

равен .F. и

об ошибке, когда

 

сообщение об

истечет время,

 

ошибке будет

установленное в

 

появляться.

свойстве

 

Если параметр

OLEServerBusyTimeout

 

равен .T.,

 

 

сообщения не

 

 

будет

 

OLEServerBusyTimeout [ = nMilliseconds -

Определяет время, в

nMilliseconds]

величина

течение которого

 

времени в

происходит повторное

 

миллисекундах

выполнение запроса

 

до появления

OLE Automation, если

 

сообщения о

занят сервер

 

том, что сервер

 

 

занят

 

StartMode

 

Возвращает число,

 

 

идентифицирующее

 

 

тип запускаемого

 

 

приложения

StatusBar [ =

cMessageText -

Определяет текст в

cMessageText]

строка

статус-строке

 

сообщения

приложения

Top [ = nDist]

nDist -

Определяет

 

расстояние от

расположение окна

 

верхнего края

приложения от

 

 

верхнего края

Version

 

Возвращает в виде

 

 

строки символов

 

 

номер версии

 

 

запускаемого

 

 

приложения

Visible [ = lExpr]

lExpr - по

Определяет, будет ли

 

умолчанию

запускаемая копия

 

равен .F., то

приложения видима

 

есть

 

 

запускаемая

 

 

копия

 

 

приложения не

 

 

видима. Если

 

 

значение равно

 

 

.T. - приложение

 

 

становится

 

 

видимым

 

Width [ = nWidth]

nWidth - ширина Определяет ширину

 

 

converted to PDF by HupBaH9I

 

окна

окна приложения

 

приложения

 

Таблица П.1.2. Методы объекта Application

Метод

Параметры

Описание

DataTo

nWorkArea,

Копирует

Clip([nWorkArea

cTableAlias - рабочая записи в

| cTableAlias] [,

область или

буфер обмена

nRecords] [,

псевдоним

в виде текста,

nClipFormat])

источника данных.

в котором

 

nRecords - число

каждая запись

 

копируемых

занимает

 

записей. nClipFormat отдельную

 

- по умолчанию

строку

 

равен 1, при этом

 

 

данные полей

 

 

разделяются

 

 

пробелами. Если

 

 

параметр равен 3,

 

 

данные разделяются

 

 

знаком табуляции

 

DoCmd

cCommand -

Позволяет

(cCommand)

выражение,

выполнить

 

представляющее

команду Visual

 

команду Visual

FoxPro из

 

FoxPro

приложения,

 

 

являющегося

 

 

OLE-

 

 

контроллером

Eval

cExpression -

Преобразует

(cExpression)

выражение, которое

выражение и

 

необходимо

возвращает

 

преобразовать

его в Visual

 

 

FoxPro

Help

cFileName - имя и

Открывает

([cFileName] [,

путь к файлу

окно с

nContextID] [,

справки. nContextID

контекстной

cHelpTopic])

- идентификатор

справкой

 

раздела. cHelpTopic

 

 

- тема раздела

 

Quit()

 

Закрывает

 

 

запущенную

 

 

копию

 

 

приложения

 

 

Visual FoxPro

RequestData

nWorkArea,

Создает массив

([nWorkArea |

cTableAlias - рабочая с данными из

cTableAlias] [,

область или

источника

nRecords])

псевдоним

данных Visual

 

источника данных.

FoxPro

 

nRecords - число

 

 

копируемых записей

 

Для ссылки на объект Application можно использовать системную переменную _VFP.

Visual FoxPro 5.0 имеет следующие коллекции, которые ассоциируются с объектом Application. Каждая коллекция может иметь соответствующие объекты:

Forms - формы;

Objects - объекты;

Controls - элементы управления;

Page - страницы;

Buttons - кнопки;

Columns - колонки.

Соседние файлы в предмете Программирование на Delphi