Библиотека: А. Горев, С. Макашарипов, Р. Ахаян. Эффективная работа с СУБД
Приложение 1 Дополнительные возможности новой версии Visual FoxPro 5.0
- Визуальные средства проектирования
- Поставка программного пакета
- Требования к установке
- Project Manager
- Работа с кодом программы
- Создание базы данных
- Работа с данными
- Расширение возможностей технологии клиент-сервер
- Построение пользовательского интерфейса
- Расширение функций OLE
- Отладка приложения
К тому времени, когда рукопись данной книги уже была сдана в издательство, вышла новая версия СУБД Visual FoxPro, которая получила номер версии
5.0. Где же версия 4? Ведь в книге все время говорилось о Visual FoxPro
версии 3.0. Ничего страшного не произошло? и разработчики Microsoft
еще не разучились считать. Visual FoxPro получил номер версии 5 для
унификации с новыми версиями других средств разработки Microsoft:
Visual Basic 5.0 и Visual C++ 5.0. Ну что ж, это является лишним свидетельством
постоянной тенденции к унификации средств разработки для совершенствования
процесса создания прикладного программного обеспечения.
В связи с появлением на полках магазинов новой версии Visual FoxPro мы решили кратко рассказать о тех новых возможностях, которые появились
у программистов по сравнению с изложенными в книге.
Визуальные средства проектирования
В новой версии Visual FoxPro расширен набор визуальных средств разработки приложений. Появились два новых Мастера.
Мастер создания приложения (Application Wizard) позволяет объединить возможности других Мастеров Visual FoxPro и в то же время
обладает новыми уникальными функциями. На рис. П.1.1 приведен вид
этого Мастера на первом шаге. Вы можете выбрать один из вариантов
дальнейших действий:
- Создание проекта, структуры папок для размещения входящих
в проект файлов и нескольких исходных модулей на основе базовых классов
Visual FoxPro. Для этого необходимо, как это видно на рис. П.1, выбрать
опцию Framework only. При выборе этого варианта работа Мастера заканчивается
на втором шаге. Вы получаете файл проекта с двумя заготовками форм,
две визуальные библиотеки классов, меню и главную программу для запуска
приложения.
- Дополнительно к первому варианту создание полнофункционального
приложения с набором, по вашему выбору, создаваемых форм и отчетов.
При этом вы должны указать базу данных, для которой будет генерироваться
приложение.
 Рис. П.1.1. Первый шаг работы с Мастером создания приложения
Мастер наращивания для СУБД Oracle Server 7.0 (Oracle
Upsizing Wizard) позволяет перенести данные из локальной БД на сервер Oracle, преобразовать локальные таблицы и представления в таблицы и представления внешней БД и, насколько это возможно, продублировать функциональность приложения Visual FoxPro для БД Oracle. Обратите внимание, что поставляемый драйвер ODBC для Oracle работает только
в ОС Windows NT. На компьютере должна быть установлена копия программы SQL Net - составной части клиентского программного обеспечения Oracle.
Расширена функциональность и удобство использования существующих Мастеров. Основные нововведения:
- Form Wizard позволяет теперь создавать страничные блоки для увеличения числа размещаемых полей.
- Pivot Table Wizard и Mail Merge Wizard позволяют теперь использовать 32-разрядный драйвер ODBC Visual FoxPro.
- Upsizing Wizard поддерживает установленные правила ссылочной целостности.
Свободно распространяемый ранее Мастер для создания Web-страниц (World Wide Web Search Page Wizard) теперь включен в состав
пакета как утилита, которая позволяет на основе записей, хранящихся
в БД, создать Web-страницы для поиска и отображения данных.
Поставка программного пакета
Visual FoxPro 5.0 поставляется только в виде профессиональной
версии на CD-ROM, которая содержит все необходимые элементы для создания
пользовательского приложения. Внешне коробка с пакетом программ теперь
существенно "похудела" и напоминает коробку с Visual C++.
Это произошло за счет того, что объемная печатная документация заменена
на мощную интерактивную среду Online Documentation. С ее помощью вы
можете искать необходимый материал, пользоваться перекрестными ссылками
и даже смотреть мультимедиа клипы о способах наиболее эффективной
работы с Visual FoxPro. Интерфейс электронной документации очень удобен,
но... А "но" заключается в том, что физически электронная
документация представляет собой файл БД Access размером около 70 Мбайт
плюс примерно такой же объем файлов с видеоклипами. А это значит,
что для работы с ней вам потребуется ну очень мощный компьютер. По
крайне мере, 486DX2-66 с 20 Мбайт ОЗУ и очень быстрым жестким диском
с этой задачей не справился.
Требования к установке
Новая версия Visual FoxPro не будет работать на 16-разрядной
платформе Windows 3.х. Для работы самой СУБД и разработанного на ее
основе приложения требуется Windows 95, Windows NT 3.51 или Windows
NT 4.0.
Корпорация Microsoft так определяет минимальные требования
к компьютеру для работы Visual FoxPro 5.0 под управлением ОС Windows 95:
- Процессор 486 с частотой 50 MHz.
- Мышь.
- Объем ОЗУ 10 Мбайт.
- Свободное пространство на жестком диске: 15 Мбайт для
установки варианта для переносного компьютера, 100 Мбайт - для
типичной установки и 240 Мбайт - для полной.
Для работы Setup Wizard и создания OLE Automation сервера
на компьютере должна быть установлена Runtime версия Visual FoxPro. Проверьте, не исключили ли вы этот пункт при установке Visual FoxPro.
Project Manager
Теперь в Project Manager ориентироваться стало значительно
легче за счет того, что каждый объект сопровождается значком, идентифицирующим
его тип (рис. П.1.2). Более тесной стала интеграция с Microsoft Visual SourceSave - пакетом программ для организации коллективной работы над пользовательским приложением. Project Manager будет визуально отображать статус объекта.
 Рис. П.1.2. Отображение типа объекта в Project Manager
Работа с кодом программы
Существенные усовершенствования внесены в процесс разработки
программ. Наконец-то появился цвет в Редакторе и, соответственно,
в окне Command, так, как это реализовано в Visual Basic. Работая
над кодом программы, нажмите правую кнопку мыши, и вы увидите длинное
контекстное меню, изображенное на рис. П.1.3.
 Рис. П.1.3.
При выборе команды Build Expression можно воспользоваться Построителем выражений. Очень удобно, особенно если лень разбираться
со сложным синтаксисом. Теперь мы можем выполнять не только программу,
но и ее произвольный фрагмент, выбрав команду Execute Selection.
Следующая команда Procedure/Function List выводит диалоговое
окно (рис. П.1.4), в котором, используя список процедур и функций
вашей программы, можно быстро перейти к требуемому фрагменту.
 Рис. П.1.4.
В контекстном меню, приведенном на рис. П.1.3, вы найдете
еще две новые команды: Comment и Uncomment. Эти команды
позволяют мгновенно пометить как комментарий выделенный фрагмент кода,
который не нужно в данный момент выполнять, и, наоборот, убрать установленные
ранее символы комментария. Чрезвычайно полезная возможность в период
отладки программы.
Создание базы данных
В новой версии контейнер БД существенно расширен. Особенно
ярко это проявляется при проектировании таблиц. На рис. П.1.5 представлен
новый Конструктор таблицы и отмечены вновь появившееся элементы. Теперь
для того, чтобы задать обычный индекс, совсем не обязательно переходить
на другую вкладку - это можно сделать сразу при определении
соответствующего поля.
 Рис. П.1.5.
Очень важным нововведением является возможность задать для
поля класс элемента управления, с помощью которого будут отображаться
данные при работе с формой. Еще более важным обстоятельством является
возможность выбора этого класса из библиотеки разработчика. Такая
возможность существенно облегчает процесс разработки пользовательского
интерфейса. Новая вкладка Table позволяет быстро перейти к установке
правил проверки и триггеров на уровне таблицы и записи.
Работа с данными
Развитие визуальных средств разработки приложений коснулось
расширения возможностей программиста при создании представлений и
запросов. Вы можете создавать внешние объединения, указывать псевдонимы
для колонок, определять явно или в процентах число строк, помещаемых
в результат.
Эти возможности основываются на расширенном синтаксисе
команды 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 автоматически управляет задачей координации
изменений между независимым представлением и данными в БД.
Для создания и использования независимых представлений вы можете применять следующие команды и функции.
Для получения независимого представления на основе существующего откройте соответствующую БД и используйте функцию
- 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
В Конструкторе меню появилась новая кнопка 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 [ = Setting] | Property - свойство формы | Обеспечивает ссылку на активную форму или объект _SCREEN |
ActiveForm.Method | Setting - значение свойства Method - метод формы |
AutoYield [ = lExpr] | lExpr - по умолчанию равен .T., что
предусматривает приоритет событий Windows. Значение .F. предотвращает
прерывание выполнения кода Visual FoxPro. При этом события Windows
ставятся в очередь | Определяет способ обработки событий Windows |
Caption [ = cText] | cText - текст заголовка | Определяет
заголовок окна приложения |
DefaultFilePath [ = cPath] | cPath - обозначение устройства, папки или пути | Определяет папку по умолчанию для приложения |
FullName | | Определяет путь и имя файла для запуска копии Visual FoxPro |
Height [ = nHeight] | nHeight - высота окна приложения | Определяет высоту окна приложения |
Left [ = nDist] | nDist - расстояние от левого
края | Определяет расположение окна приложения с левого края |
Name [ = cName] | cName - имя объекта | Задает имя
объекта для ссылки в коде программы |
OLERequestPendingTimeout [ = nMilliseconds] | nMilliseconds -
величина задержки в миллисекундах. По умолчанию равна 5000 мс. Если
параметр равен 0, сообщение не появляется | Определяет задержку времени,
которая происходит перед появлением сообщения о том, что система
занята в процессе выполнения запроса OLE Automation, если пользователь
использует клавиатуру или мышь |
OLEServerBusyRaiseError [ = lExpression] | lExpression - по умолчанию равен .F. и сообщение об ошибке будет появляться. Если параметр равен
.T., сообщения не будет | Определяет появление сообщения об ошибке,
когда истечет время, установленное в свойстве OLEServerBusyTimeout |
OLEServerBusyTimeout [ = nMilliseconds] | nMilliseconds -
величина времени в миллисекундах до появления сообщения о том, что
сервер занят | Определяет время, в течение которого происходит повторное
выполнение запроса OLE Automation, если занят сервер |
StartMode | | Возвращает число, идентифицирующее тип запускаемого
приложения |
StatusBar [ = cMessageText] | cMessageText - строка
сообщения | Определяет текст в статус-строке приложения |
Top [ = nDist] | nDist - расстояние от верхнего края | Определяет расположение окна приложения от верхнего края |
Version | | Возвращает в виде строки символов номер версии запускаемого
приложения |
Visible [ = lExpr] | lExpr - по умолчанию равен .F., то есть запускаемая копия приложения не видима. Если значение равно .T. - приложение становится видимым | Определяет, будет ли запускаемая копия приложения видима |
Width [ = nWidth] | nWidth - ширина окна приложения | Определяет ширину окна приложения |
Таблица П.1.2. Методы объекта Application
Метод | Параметры | Описание |
DataTo Clip([nWorkArea | cTableAlias] [, nRecords] [, nClipFormat]) | nWorkArea, cTableAlias -
рабочая область или псевдоним источника данных.
nRecords - число копируемых записей.
nClipFormat - по умолчанию равен 1, при этом данные
полей разделяются пробелами. Если параметр равен 3, данные разделяются
знаком табуляции | Копирует записи в буфер обмена в виде текста, в котором каждая запись занимает отдельную строку |
DoCmd (cCommand) | cCommand - выражение, представляющее
команду Visual FoxPro | Позволяет выполнить команду Visual FoxPro из
приложения, являющегося OLE-контроллером |
Eval (cExpression) | cExpression - выражение, которое
необходимо преобразовать | Преобразует выражение и возвращает его в Visual FoxPro |
Help ([cFileName] [, nContextID] [, cHelpTopic]) | cFileName - имя и путь к файлу справки. nContextID - идентификатор раздела.
cHelpTopic - тема раздела | Открывает окно с контекстной справкой |
Quit() | | Закрывает запущенную копию приложения Visual FoxPro |
RequestData ([nWorkArea | cTableAlias] [, nRecords]) | nWorkArea, cTableAlias - рабочая область или псевдоним источника данных. nRecords - число копируемых записей | Создает массив с данными из источника данных Visual FoxPro |
Для ссылки на объект Application можно использовать системную переменную _VFP.
Visual FoxPro 5.0 имеет следующие коллекции, которые ассоциируются с объектом Application. Каждая коллекция может иметь соответствующие
объекты:
- Forms - формы;
- Objects - объекты;
- Controls - элементы управления;
- Page - страницы;
- Buttons - кнопки;
- Columns - колонки.
При этом обратите внимание, что эти коллекции являются коллекциями исключительно OLE-объектов и могут использоваться только с объектом
Application. К этим коллекциям нельзя обращаться, используя ассоциированные
с включенными в них объектами переменные. Вы должны использовать свойство
Application как это показано ниже:
- oFrm = CREATEOBJECT('Form')
- ? oFrm.Application.Forms[1].Controls.Count
Отладка приложения
Новая версия Visual FoxPro позволяет более легко отлаживать и наблюдать за работой приложения. Вместо специальных диалоговых окон Trace и
Debug теперь используется интегрированный отладчик Debugger. Новый
отладчик может загружаться в отдельное окно, не привязанное к главному
окну Visual FoxPro или пользовательского приложения, что облегчает
его использование и не мешает обычной работе. Новый отладчик просто
прекрасен, а его основные возможности продемонстрированы на рис. П.1.6.
 Рис. П.1.6.
Отладчик имеет несколько окон, обеспечивающих выполнение разнообразных функций.
В окне Trace вы можете просматривать программный код. Если отлаживается работа формы, то нужный фрагмент кода легко найти, выбирая из раскрывающихся
списков в верхней части этого окна объект и событие или метод. Зона
слева от программного кода зарезервирована для следующих символов:
- текущая выполняемая линия кода;
- l активная точка останова;
- m неактивная точка останова;
- позиция вызова в стеке, если вы проверяете выполнение кода на уровне, отличном от текущего выполняемого кода.
Двойной щелчок мыши в этой зоне позволяет установить или убрать точку останова выполнения программы на данной строке кода.
Окно Watch позволяет просматривать значения выражений. Набирая в текстовом поле соответствующие выражения и нажимая клавишу Enter, вы помещаете их в список, в котором отображается текущее значение и его тип. В зоне слева вы можете установить или снять точку останова, которая будет прерывать выполнение программы каждый раз при изменении значения выражения. Для включения в список сложных выражений нет необходимости
набирать их заново. Выделите нужный текст в любом окне Visual FoxPro и перетащите его в окно Watch. Для редактирования выражения дважды щелкните на нем мышкой.
Помимо трех видимых окон, отладчик имеет еще два окна, которые могут вызываться из его меню Window:
- Call Stack - позволяет просматривать список выполняемых процедур,
программ и методов;
- Output - позволяет просматривать выводимые данные активной программы,
процедуры или метода.
Глава 12 || Содержание || Приложение 2
|