Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание отчетов.


JazY ©   (2005-12-08 00:25:00) 

Мой вопрос касается создания отчетов. У меня есть большой Аксесовский файл в котором сосредоточено куча всякого добра. В этом же файле есть поле "Получатель". Там я указываю человека, который получает информацию указанной в строке. С помощью фильтра я оставляю в DBgrid только определенных получателей. Теперь отфильтрованные данные необходимо добавить в отчет, чтобы затем его распечатать. Мой вопрос как это сделать? В смысле как сформировать отчет? Понимаю, что вопрос общий, поэтому если можно укажите в каком направление "копать", чтобы я хотя бы знал чего в Яндексе набирать и какие примеры искать?


JazY   (2005-12-09 00:55:00) [1]

2 Сафаров
Спасибо! Уже сдеал пару отчетов.
Еще раз спасибо!


Сафаров   (2005-12-08 22:07:00) [2]

если нужно выделить второй столбец, то я бы попробовал так (не проверял)
ExcellApp.ActiveWorkBook.WorkSheet[1].Columns[2].select;
ExcellApp.Selection.WrapText:=true;
...


Сафаров   (2005-12-08 21:58:00) [3]

ExcelApp.ActiveWorkBook.WorkSheets[1].Cells.select; //выделяем весь лист
ExcelApp.Selection.WrapText:=True;    //включаем перенос строк в ячейках
ExcelApp.Selection.Rows.AutoFit;      //включаем автоподбор высоты строк
ExcelApp.Selection.VerticalAlignment:=1; //выравнивание поверху
ну и.т.д. Терпения, терпения, терпения


Fl@sh   (2005-12-08 20:28:00) [4]


> JazY   (08.12.05 12:30) [4]

Rave рулит!!


JazY   (2005-12-08 20:14:00) [5]


> Что-то в этом роде...раз ты обиделся на "начинающего"..

Нет, я не обиделся тем более, что я действительно начинающий... причем сильно :) Спасибо за исходник!

Единственный оставшийся вопрос как "перелопатить" макрос в Делфи. Насколько я понимаю, макрос написан на модифицированном VBA.
Вот, например, код макроса, который позволяет переносить по словам текст в столбце В:
   Columns("B:B").Select
   With Selection
       .HorizontalAlignment = xlGeneral
       .VerticalAlignment = xlBottom
       .WrapText = True
       .Orientation = 0
       .AddIndent = False
       .IndentLevel = 0
       .ShrinkToFit = False
       .ReadingOrder = xlContext
       .MergeCells = False
   End With
Как переделать этот код для Делфи?


Виталий Панасенко   (2005-12-08 18:12:00) [6]

А что, тяжело "догнать" ? НД уже отфильрован.. Код ничем не будет отличаться от приведенного.. Кроме индексов Cells...
Что-то в этом роде...раз ты обиделся на "начинающего"..
var
I : Integer;
begin
.....
.....
I := 2;
while  not DataSet.EOF do
begin
ExcelApp.ActiveWorkBook.WorkSheets[1].Cells[I,1] := DataSet.FieldByName('Наименование').AsVariant;
ExcelApp.ActiveWorkBook.WorkSheets[1].Cells[1,2] := DataSet.FieldByName('Адрес').AsVarinat;
ExcelApp.ActiveWorkBook.WorkSheets[1].Cells[1,3] := DataSet.FieldByName('Связь').AsVarinat;
Inc(I);
DataSet.Next;
end;
...
....
end;


JazY   (2005-12-08 17:23:00) [7]

Блин, и раз уж мой вопрос перенесли в раздел "Начинающие", то еще один вопрос от начинающего!
Этот код создает "шапку" будущего отчета,:
ExcelApp.ActiveWorkBook.WorkSheets[1].Cells[1,1] := 'Наименование';
ExcelApp.ActiveWorkBook.WorkSheets[1].Cells[1,2] := 'Адрес';
ExcelApp.ActiveWorkBook.WorkSheets[1].Cells[1,3] := 'Связь';
а вот как в этот отчет затем вставить отфильтрованные данные из Dbgridа? Просьба указать исходник! Сильно нужно!


JazY   (2005-12-08 17:17:00) [8]

2 Сафаров
Эксель - друг человека. Кроме того, я немного освоил макросы в Экселе, поэтому переносить отчет в Эксель было бы думается интересным вариантом. У меня вопрос касающийся того как "перелопатить" макрос в Делфи? Как это можно сделать?


Сафаров   (2005-12-08 16:02:00) [9]

uses ComObj;
...
var ExcelApp:variant;
...
begin
try
   ExcelApp := CreateOleObject ('Excel.Application');
except
  MessageDlg('Не могу загрузить Microsoft Excel', mtError, [mbOK], 0);
  Exit;
end;
ExcelApp.Application.EnableEvents := false;
ExcelApp.WorkBooks.Add;   //создаем книгу
ExcelApp.ActiveWorkBook.WorkSheets[1].Cells[1,1] := 'Наименование';
ExcelApp.ActiveWorkBook.WorkSheets[1].Cells[1,2] := 'Адрес';
ExcelApp.ActiveWorkBook.WorkSheets[1].Cells[1,3] := 'Связь';
// и т.д.
ExcelApp.Visible:=true;
ExcelApp := UnAssigned;

Удобства:
1) пользователь перед печатью имеет всю мощь Excel для того, чтобы "подкрасить глазки" отчету;
2) легко можно самому подкрасить отчет. Достаточно  записать макрос в Excel и немножко перелопатить его в Делфи.


Sergey13   (2005-12-08 13:01:00) [10]

2[4] JazY   (08.12.05 12:30)
> какой лучше с точки зрения простоты.
ИМХО, для твоего случая любой будет несложен. Если тебе просто грид надо распечатать, то например DBGridEH (библиотека EhLib) может это сделать и без репортера.


Anatoly Podgoretsky   (2005-12-08 12:50:00) [11]

QuickReport, плюс он полностью встраивается в твою программу.


JazY   (2005-12-08 12:30:00) [12]

Совсем забыл спросить! Как по вашему мнению, из всех указанных компонентов: Rave Report, QuickReport, FreeReport, FastReport, какой лучше с точки зрения простоты.


JazY   (2005-12-08 12:25:00) [13]

Спасибо. Пошел разбираться.


sniknik   (2005-12-08 08:53:00) [14]

> в каком направление "копать"
прямо отсюда и до обеда... направление вычисляемо. ;)

Rave Report, QuickReport, FreeReport, FastReport, OLE сервер автоматизации Access, ехпорт в Exel печать им.(также возможно через OLE/COM) /... наверняка чтото еще.

первые 2 из поставки дельфей, первый поновее. третий, четвертый сторонние пакеты надо найти и установить. последние - использование COM для доступа к "чужой" программе, многое можно найти на  вкладке Servers.


mr.IL   (2005-12-08 06:36:00) [15]

Удалено модератором
Примечание: мат


Наверх

Титульная страница Поиск, карта сайта Написать письмо