Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2012, 19:39   #1
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию Создание отчета из запроса ADoquary в Excel

Здравствуйте, подскажите пожалуйста, как реализовать код, если нужно выгрузить данные из запроса ADoquary (MS SQL), а главное чтобы перед открытием сформированного Excel-документа открывался "Предварительный просмотр страницы"
ins813 вне форума Ответить с цитированием
Старый 07.06.2012, 00:39   #2
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Excel. Ищем примеры по таким вот словам:
CreateOleObject('Excel.Application' );

Творчески перерабатываем под свою задачу. Если чего-то не хватает - делаем в Excel под запись макроса, потом получившееся переводим в синтаксис Delphi
Но я подозреваю, что тебе достаточно будет вот такого:
XL := CreateOleObject('Excel.Application' );
WB := XL.Workbooks.Add();
WS := WB.Sheets[1];

Выгрузка данных:
with query do begin First; while not Eof do begin for X := 0 to Fields.Count-1 do WS.Cells[RecNo+1, X+1] := Fields[X].Value; Next; end; end;

Предварительный просмотр:
XL.Visible := True;
WS.PrintPreview;

Удачи, гугл в помощь.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 07.06.2012, 11:41   #3
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию

var
Form1: TForm1;
XLApp,Sheet,Colum: variant;
index,i: integer;
....

procedure TForm1.Button2Click(Sender: TObject);
begin

XLApp:= CreateOleObject('Excel.Application' );
XLApp.Visible:=true;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт';
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns;
Colum.Columns[1].ColumnWidth:=8;
....
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Rows;
Colum.Rows[3].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;

Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт'];
Sheet.Cells[1,5]:='Утверждаю:';
Sheet.Cells[2,4]:=' Ген.директор';

index:=4;
ADOquery1.First;
for i:=0 to ADOquery1.RecordCount do
begin
Sheet.Cells[index,1]:=IntToStr(i+1);
Sheet.Cells[index,2]:= ADOquery1.FieldByName('date').AsStr ing;
Sheet.Cells[index,3]:= ADOquery1.FieldByName('name').AsStr ing;
Sheet.Cells[index,4]:= ADOquery1.FieldByName('kol_vo').AsS tring;
Sheet.Cells[index,5]:= ADOquery1.FieldByName('street').AsS tring;
Sheet.Cells[index,6]:= ADOquery1.FieldByName('kv').AsStrin g;
Inc(index);
ADOquery1.Next;
end;

Выдает ошибку и неполучается с предварительным просмотром !
Изображения
Тип файла: jpg Точечный рисунок.JPG (224.0 Кб, 148 просмотров)
ins813 вне форума Ответить с цитированием
Старый 07.06.2012, 12:07   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

да нет .. он говорит что не может выполнить операцию с закрытым ДатаСетом (ADOQuery)
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 07.06.2012, 12:22   #5
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию

Спасибо Вам, получилось, вот Только Осталась проблема с Предварительным просмотром, не знаеете как реализовать его ?
ins813 вне форума Ответить с цитированием
Старый 07.06.2012, 14:38   #6
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Родное сердце, ты бы хоть ответы полностью читал, что ли... Ну, если не можешь записать в Excel'е макрос и посмотреть, какие процедуры/функции/методы вызываются.

Намёк: смотрим первый ответ и ищем волшебное слово PrintPreview.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 07.06.2012, 22:26   #7
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию

"Родное сердце" - сильная фраза + 1 спасибо за терпение, с макросами не работал, попробую разобраться.
З.Ы. про намек скорее всего не понял( м.б. ты имел в виду загуглить - PrintPreview ?! )
ins813 вне форума Ответить с цитированием
Старый 07.06.2012, 22:54   #8
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

он намекнул вот на это
Цитата:
Сообщение от ych_del Посмотреть сообщение
Excel. Ищем примеры по таким вот словам:
CreateOleObject('Excel.Application' );
...
Предварительный просмотр:
XL.Visible := True;
WS.PrintPreview;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 08.06.2012, 07:01   #9
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Цитата:
Сообщение от ins813 Посмотреть сообщение
с макросами не работал, попробую разобраться.
На самом деле всё просто. В том же Excel включаешь запись макроса, выполняешь интересующие тебя действия (тот же "Файл->Предварительный просмотр"), останавливаешь запись, смотришь результат (Alt+F8 - список макросов, Alt+F11 - сразу окно VBA), если что-то непонятно - читаешь справку, потом копипастишь в Delphi, исправляешь синтаксис. С опытом будет всё более понятнее.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 08.06.2012, 09:33   #10
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию

в общем код из макроса ActiveWindow.SelectedSheets.PrintPr eview;
добавил свою переменную XLApp.ActiveWindow.SelectedSheets.P rintPreview;
но результат неуд. т.к. он вывод не превью а просто очерчивает пунктиром область печати (:
ins813 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание отчета Yusha Общие вопросы Delphi 3 27.12.2011 07:09
Создание отчета Ol_Bak Microsoft Office Access 1 25.01.2011 13:43
Создание отчета -=pasha=- Компоненты Delphi 5 20.01.2011 07:44
Создание отчета bsi1952 Microsoft Office Access 1 27.06.2010 20:43
Создание отчета Deni55 Microsoft Office Excel 13 15.06.2009 14:53