Использование 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