В Visual FoxPro имеется возможность хранить в таблицах сами объекты или связь с объектами, которые созданы в приложении, поддерживающем механизм связывания и внедрения (OLE). Основное отличие между связыванием и внедрением состоит в том, каким образом данные запоминаются и обновляются после того, как их поместили в базу данных.
При связывании данные обновляются, когда изменяется исходный файл. Связанные данные запоминаются в исходном файле; в базе данных сохраняются только сведения о месте расположения исходного файла. Внедренные объекты сохраняются в базе данных. Если установить на внедренный объект указатель и дважды щелкнуть мышью, откроется приложение, в котором объект был создан. В нем можно редактировать внедренный объект, при этом измененные данные записываются в базу данных.
Объект, который внедряется или связывается, называется OLE-объектом. Исходное приложение, в котором был создан OLE-объект, называется приложением-сервером, а приложение, в которое внедряется или с которым связывается OLE-объект, — приложением-клиентом.
В Visual FoxPro OLE-объекты могут храниться и отображаться только в полях типа General (Общий). Для внедрения OLE-объекта в таблицу Visual FoxPro выполните следующие действия:
Замечание
Если поле типа General (Общий) пусто, то при просмотре таблицы в нем появляется пометка gen. Если поле содержит OLE-объект, то пометка принимает вид Gen.
Рис. 21.1. Просмотр в режиме Browse таблицы, содержащей поля типа General
При выборе переключателя Создать новый выберите из предложенного списка Тип объекта сервер, который хотите использовать для создания объекта, и нажмите кнопку ОК. Откроется приложение, в котором создайте объект, после чего вернитесь в Visual FoxPro.
Для использования существующего объекта выберите переключатель Создать из файла. Диалоговое окно примет другой вид. Воспользовавшись кнопкой Обзор, найдите необходимый файл и вставьте его содержимое в поле таблицы.
Замечание
В Visual FoxPro для хранения сложных текстов можно использовать поле типа General (Общий), внедрив в него или связав с ним документ текстового процессора.
Рис. 21.2. Окно редактирования поля типа General
Рис. 21.3. Диалоговое окно Вставка объекта
Рассмотрим процедуру внедрения нового OLE-объекта на примере поля gimage таблицы Goods.
Рис. 21.4. Создание изображения товара
Рис. 21.5. Размещение в поле таблицы нового OLE-объекта
Если вам потребуется внести изменения во встроенный OLE-объект, откройте таблицу в режиме Browse (Обзор) и дважды щелкните на требуемом значении. В результате откроется окно редактирования поля типа General (Общий). Для редактирования изображения используется команда Точечный рисунок Object (Объект) из меню Edit (Правка).
Данная команда имеет собственное меню, которое содержит опции Изменить и Открыть, определяющие режим редактирования изображения (см. рис. 21.5). При выборе опции Изменить меню и панели инструментов OLEсервера внедряются непосредственно в Visual FoxPro (см. рис. 21.4). При выборе опции Открыть открывается приложение OLE-сервера (рис. 21.6), в котором вы можете редактировать изображение поля типа General (Общий).
Рис. 21.6. Открытое приложение OLE-сервера для редактирования изображения
Внедрение OLE-объекта из файла
Для внедрения в поле таблицы OLE-объекта из файла выполните следующие действия.
Рис. 21.7. Диалоговое окно Вставка объекта при выбранном переключателе Создать из файла
Рис. 21.8. Диалоговое окно Обзор
Чтобы связать OLE-объект с основной копией объекта на сервере, можно воспользоваться командой Insert Object (Вставка объекта) или Paste Special (Специальная вставка) из меню Edit (Правка). Рассмотрим оба варианта.
Для размещения в поле таблицы Visual FoxPro OLE-объекта со связью с помощью команды Insert Object (Вставить объект) выполните следующие действия:
Рис. 21.9. Установлен флажок Связь
Рис. 21.10. Связывание OLE-объекта
Для размещения в поле типа General (Общий) OLE-объекта со связью с помощью команды Paste Special (Специальная вставка) выполните следующие действия:
Рис. 21.11. Диалоговое окно Специальная вставка
Ссылка на OLE-объект, запоминаемая в поле типа General (Общий), содержит имя файла (включая путь к нему) оригинала объекта на сервере. Если вы измените имя этого файла, перенесете или удалите его, связь разрывается. Для восстановления связи необходимо воспользоваться командой Links (Связи) из меню Edit.
Совет
Для изменения объекта в поле типа General (Общий) со связанного на внедренный необходимо удалить объект из поля с помощью команды Cut (Вырезать) из меню Edit (Правка), а после этого вставить объект обратно в поле, но без связывания.
Если OLE-объект был размещен со связью, диалоговое окно Связи позволяет изменить или удалить установленную связь (рис. 21.12). Для его просмотра откройте требуемую таблицу, перейдите в поле со связанным объектом и в меню Edit (Правка) выберите команду Links (Связи).
Рис. 21.12. Диалоговое окно Связи
В списке Связи представлены все связи объекта в табличном виде с указанием пути и имени файла источника, а также типа объекта и режима обновления связи.
В диалоговом окне размещены кнопки, имеющие назначение, описанное в табл. 21.1.
Таблица 21.1. Назначение кнопок диалогового окна Связи
Кнопка | Назначение |
Обновить сейчас | Обновляет выделенную связь |
Открыть источник | Открывает исходный файл для выделенной связи |
Сменить источник | Заменяет исходный файл для выделенной связи с помощью диалогового окна Смена источника |
Разорвать связь | Разрывает указанную связь. В результате объект становится статическим, не допускающим изменения или обновления |
Переключатель Обновление определяет режим обновления связи и содержит два переключателя: Автоматическое, Вручную. При установленной опции Автоматическое обновление связанных объектов осуществляется автоматически. Если установлена опция Вручную, тогда для обновления объектов необходимо нажать кнопку Обновить сейчас.
Большинство OLE-объектов можно редактировать. Для этого откройте окно редактирования поля типа General (Общий), содержащее, например, такие OLE-объекты, как электронная таблица Microsoft Excel, документ Word или рисунок Paint и дважды щелкните мышью. Откроется приложение-сервер для редактирования объекта.
Для редактирования точечных рисунков выберите команду Растровый рисунок Object (Объект) в меню Edit (Правка), а затем команду Изменить или Открыть, которые доступны в окне редактирования поля типа General (Общий). Для редактирования документа Word в меню Edit (Правка) появляется команда Документ Object, а для редактирования электронной таблицы — Лист Object (Объект).
Чтобы удалить OLE-объект из поля типа General (Общий), выполните команду Clear (Очистить) из меню Edit (Правка).
Использование объектно-ориентированного программирования
В Visual FoxPro для управления OLE-объектами можно использовать объектно-ориентированное программирование.
Замечание
Для создания OLE-объекта в Visual FoxPro предназначена команда CREATEOBJECT.
Передача данных в Microsoft Excel с помощью OLE
В рассматриваемом примере используем данные из таблицы cntcust для построения диаграммы распределения клиентов по городам в программе Microsoft Excel с помощью OLE-объектов,
* Создание OLE-объекта
obj ExcelSheet=CreateObject("Excel.Sheet")
objExcelSheet.Application.Visible=.Т.
objExcelSheet = objExcelSheet.Sheets[1]
* Передача данных из таблицы CntCust в Excel
SELECT CNTCUST
nRow=0
SCAN
nRow=nRow+l
objExcelSheet.Cells(nRow,1).ValueCntCust.City
objExcelSheet.Cells(nRow,2).Value=CntCust.Quant
ENDSCAN
objChart = objExcelSheet.ChartObjects.Add{100, 100, 400, 200)
* Выделение данных и создание диаграммы
objExcelSheet.chartObjects(1).Chart.;
chartwizard(objExcelSheet.Range(objExcelSheet.Cells(1,1) ,;
objExcelSheet.Cells(nRow,2)),;
-4100,4,1,0,1,1,"","","","")
objExcelSheet.chartObjects(1).Select
objExcelSheet.chartObjects(1).Copy
* Закрытие сервера
objExcelSheet.application.quit
release objExcelSheet
Замечание
Наиболее простым способом формирования команд для выполнения действий над OLE-объектами является запись соответствующего макроса на сервере приложении и использование текста этого макроса в Visual FoxPro.
Рис. 21.13. Создание диаграммы с помощью OLE
Передача данных из Visual FoxPro в другие приложения
Используя команды Export (Экспорт) и Import (Импорт) из меню File (Файл), можно осуществлять обмен данными между Visual FoxPro и текстовыми файлами, а также наиболее популярными базами данных и электронными таблицами.
Для экспорта данных из таблицы Visual FoxPro выполните команду Export (Экспорт) из меню File (Файл). Открывается диалоговое окно Export (Экспорт) (рис. 21.14), в котором из списка Туре (Тип) вам необходимо выбрать тип экспортируемого формата. Допустимые типы форматов приведены в табл. 21.2.
Рис. 21.14. Диалоговое окно Export
Таблица 21.2. Типы экспортируемых форматов
Тип | Кодовое обозначение | Назначение |
Visual FoxPro 3.0 (DBF) | Копирование одной таблицы в другую | |
FoxPro для Windows 2.x (DBF) | FOX2X | Экспорт в формат FoxPro для Windows 2.x |
FoxBASE+ (DBF) | FOXPLUS | Экспорт в формат FoxBASE+ |
dBASE IV (DBF) | Экспорт в формат dBASE IV | |
Delimited Text | Экспорт в текстовый файл с разделителями | |
Microsoft Excel 5.0 (XLS) | XLS | Экспорт в формат электронной таблицы Microsoft Excel 5.0 |
Microsoft Excel 2.0, 3.0 и 4.0 (XLS) | XLS | Экспорт в формат электронных таблиц Microsoft 2.0, 3.0 и 4.0 |
Lotus 1-2-3 2.x (WK1) | WK1 | Экспорт в формат электронной таблицы Lotus 1-2-3 2.x |
Lotu s 1-2-31 -A (WKS) | WKS | Экспорт в формат электронной таблицы Lotus 1-2-3 1-А |
Symphony 1.10 (WR1) | WR1 | Экспорт в формат электронной таблицы Symphony 1.10 |
Symphony 1.01 (WRK) | WRK | Экспорт в формат электронной таблицы Symphony 1.01 |
MultiPlan 4.01 (MOD) | MOD | Экспорт в формат электронной таблицы MultiPlan 4.01 |
Data Interchange Format (DIF) | DIF | Экспорт в текстовый файл, используемый приложением VisiCalc |
System Data Format (SDF) | SDF | Экспорт в стандартный текстовый файл |
Symbolic Link Format | SYLK | Экспорт в текстовый файл, используемый электронной таблицей MultiPlan |
В поле ввода From (Форма) диалогового окно Export (Экспорт) необходимо указать имя экспортируемой таблицы, а в поле То (В) — имя файла, в который будет записываться результат экспорта.
После того как вы указали имя исходной таблицы, становится доступной кнопка Options (Параметры), при нажатии на которую открывается диалоговое окно Export Options (Параметры экспорта) (рис. 21.15). В этом диалоговом окне для выбора записей таблицы, экспортируемых в выходной файл, вы можете использовать кнопки Scope (Граница), For (Для), While (Пока).
Рис. 21.15. Диалоговое окно Export Options
С помощью кнопки Fields (Поля) можно открыть диалоговое окно Field Picker (Выбор поля), в котором выбрать поля исходной таблицы для экспорта (рис. 21.16).
Рис. 21.16. Диалоговое окно Field Picker
В настоящем разделе мы обсудим импорт данных из форматов других приложений в таблицу Visual FoxPro. Для импорта данных воспользуемся услугами мастера.
Совет
Для запуска мастера импорта вы также можете воспользоваться командой Import (Импорт) из меню File (Файл). В этом случае на экране открывается диалоговое окно Import (Импорт), в котором необходимо нажать кнопку Import Wizard (Мастер импорта).
Завершив установку параметров, нажмите кнопку Next (Далее).
Рис. 21.17. Первый шаг работы мастера: выбор типа импортируемого файла
Рис. 21.18. Определение формата данных
Рис. 21.19. Определение заголовков и типов полей
Рис. 21.20. Задание форматов отображения данных
Использование данных из Visual FoxPro в Microsoft Word
Данные, содержащиеся в таблицах Visual FoxPro, можно использовать в других приложениях Windows. Например, в Microsoft Word вы можете подготовить этикетки для наклейки на конверты для рассылки своим клиентам, используя для этого данные, размещенные в таблице Customer.
Для слияния данных из Visual FoxPro и Microsoft Word необходимо использовать мастер. Чтобы его запустить, в меню Tools (Сервис) выберите команду Wizards (Мастера) и в появившемся подменю — Mail Merge (Составление писем). Слияние данных осуществляется с помощью мастера за несколько шагов.
Совет
Перед запуском мастера закройте базу данных.
Рис. 21.21. Выбор таблицы и полей
Рис. 21.22. Выбор текстового редактора
Рис. 21.23. На данном шаге вы можете выбрать созданный ранее документ
Таблица 21.3. Переключатели группы Select a document type
Переключатель | Тип создаваемого документа |
Form Letter | Письмо |
Label | Этикетка |
Envelope | Конверт |
Catalog | Каталог |
Выбрав необходимую опцию, нажмите кнопку Next (Далее) для перехода к последнему шагу мастера.
Рис. 21.24. Выбор типа создаваемого документа
Результат слияния данных приведен на рис. 21.25.
Рис. 21.25. Документ, полученный в результате слияния