Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.25;
Скачать: CL | DM;

Вниз

Создание отчетов.   Найти похожие ветки 

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

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


 
mr.IL ©   (2005-12-08 06:36) [1]

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


 
sniknik ©   (2005-12-08 08:53) [2]

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

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

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


 
JazY   (2005-12-08 12:25) [3]

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


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

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


 
Anatoly Podgoretsky ©   (2005-12-08 12:50) [5]

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


 
Sergey13 ©   (2005-12-08 13:01) [6]

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


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

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 и немножко перелопатить его в Делфи.


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

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


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

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


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

А что, тяжело "догнать" ? НД уже отфильрован.. Код ничем не будет отличаться от приведенного.. Кроме индексов 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 20:14) [11]


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

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

Единственный оставшийся вопрос как "перелопатить" макрос в Делфи. Насколько я понимаю, макрос написан на модифицированном 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
Как переделать этот код для Делфи?


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


> JazY   (08.12.05 12:30) [4]

Rave рулит!!


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

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2005.12.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.045 c
2-1134218831
De1uxe
2005-12-10 15:47
2005.12.25
Изменение типа переменной


14-1133268089
КаПиБаРа
2005-11-29 15:41
2005.12.25
Недопонимание - главный бич человечества. (restore)


1-1133036401
Василий
2005-11-26 23:20
2005.12.25
Запуск макроса в Excel средствами Delphi


9-1122462101
Kerk
2005-07-27 15:01
2005.12.25
Описание игры


3-1131260903
root
2005-11-06 10:08
2005.12.25
SQL и фрмат даты при обращении