|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.06.2012, 19:39 | #1 |
Форумчанин
Регистрация: 18.05.2012
Сообщений: 111
|
Создание отчета из запроса ADoquary в Excel
Здравствуйте, подскажите пожалуйста, как реализовать код, если нужно выгрузить данные из запроса ADoquary (MS SQL), а главное чтобы перед открытием сформированного Excel-документа открывался "Предварительный просмотр страницы"
|
07.06.2012, 00:39 | #2 |
Форумчанин
Регистрация: 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; Удачи, гугл в помощь.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
|
07.06.2012, 11:41 | #3 |
Форумчанин
Регистрация: 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; Выдает ошибку и неполучается с предварительным просмотром ! |
07.06.2012, 12:07 | #4 |
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
да нет .. он говорит что не может выполнить операцию с закрытым ДатаСетом (ADOQuery)
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... |
07.06.2012, 12:22 | #5 |
Форумчанин
Регистрация: 18.05.2012
Сообщений: 111
|
Спасибо Вам, получилось, вот Только Осталась проблема с Предварительным просмотром, не знаеете как реализовать его ?
|
07.06.2012, 14:38 | #6 |
Форумчанин
Регистрация: 06.02.2011
Сообщений: 149
|
Родное сердце, ты бы хоть ответы полностью читал, что ли... Ну, если не можешь записать в Excel'е макрос и посмотреть, какие процедуры/функции/методы вызываются.
Намёк: смотрим первый ответ и ищем волшебное слово PrintPreview.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
|
07.06.2012, 22:26 | #7 |
Форумчанин
Регистрация: 18.05.2012
Сообщений: 111
|
"Родное сердце" - сильная фраза + 1 спасибо за терпение, с макросами не работал, попробую разобраться.
З.Ы. про намек скорее всего не понял( м.б. ты имел в виду загуглить - PrintPreview ?! ) |
07.06.2012, 22:54 | #8 |
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
он намекнул вот на это
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... |
08.06.2012, 07:01 | #9 |
Форумчанин
Регистрация: 06.02.2011
Сообщений: 149
|
На самом деле всё просто. В том же Excel включаешь запись макроса, выполняешь интересующие тебя действия (тот же "Файл->Предварительный просмотр"), останавливаешь запись, смотришь результат (Alt+F8 - список макросов, Alt+F11 - сразу окно VBA), если что-то непонятно - читаешь справку, потом копипастишь в Delphi, исправляешь синтаксис. С опытом будет всё более понятнее.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
|
08.06.2012, 09:33 | #10 |
Форумчанин
Регистрация: 18.05.2012
Сообщений: 111
|
в общем код из макроса ActiveWindow.SelectedSheets.PrintPr eview;
добавил свою переменную XLApp.ActiveWindow.SelectedSheets.P rintPreview; но результат неуд. т.к. он вывод не превью а просто очерчивает пунктиром область печати (: |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание отчета | 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 |