10_Использование OLE

advertisement
Использование OLE – серверов для создания выходного документа
стр. 1
Использование OLE – серверов (Word и Excel)
для создания выходного документа
OLE – сервер представляет собой внешнее приложение, например, Microsoft Word или
Excel. Для организации доступа, то есть связи с этими приложениями в Delphi используется
переменная типа Variant, хранящаяся в модуле ComObj.
! Учитывая особенности обработки вариантных переменных, их лучше описывать глобально.
Действия
1. подключение модуля
2. Описание
переменных,
хранящих ссылку на
OLE - объекты
3. Запуск OLE –
сервера и сохранение
адреса запущенного
приложения
4. Создание нового
файла
5. Передача данных на
OLE - сервер
6. Перейти на
следующую строчку
7. Показать окно OLE сервера
Этапы работы с OLE – серверами
OLE – сервер Word
OLE – сервер Excel
Uses ComObj
Uses ComObj
E , b: Variant
Var W: Variant
e – ссылка на Excel
w – ссылка на документ Word
b – ссылка на лист
W: = CreateOLEObject
(‘Word.Basic’)
e: = CreateOLEObject
(‘Excel.Sheet’)
b:= E . Аpplication
W. FileNew (New Template:=0)
W. Insert (значение типа String)
B. Range [‘адрес ячейки’].
Value:= (значение типа String)
W. Insert (‘’+ ‘#13’)
W. appShow
b. Visible: = true
Этапы обработки набора данных
Передать все записи из таблицы или запроса базы данных на сторону OLE – сервера сразу
не возможно, а делается это циклическим перебором поочередно всех записей, начиная с
первой:
1. Перевести указатель таблицы или запроса на первую запись
имя таблицы или запроса . First
2. Начать цикл с предусловия, пока не кончится таблица или запрос.
While Not (имя таблицы или запроса. EOF) do
3. В теле цикла обратиться к значению текущей записи в нужное поле.
Begin
Имя указателя на Word. Insert (имя таблицы или запроса. FieldbyName (‘Поле’). AsString)
Или
Имя указателя на книгу Excel. Range [‘адрес ячейки’ +Номер строки].Value:=
(имя таблицы или запроса. FieldbyName (‘Поле’). AsString)
!
для перехода на следующую строку в Word надо использовать ‘#13’, а для Excel надо
применить дополнительную переменную для хранения номера строки, подставлять ее
значение в адрес ячейки B. Range [‘Имя стиолбца’+Номер строки] Ии самостоятельно
увеличивать (Номер строки:= Номер строки + 1).
4. В теле цикла после полной обработки текущей записи нужно перейти на следующую запись.
Имя таблицы или запроса. Next
end
Download