Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
2-1134256939
Antony17
2005-12-11 02:22
2005.12.25
Запуск стандартных процедур


14-1133573594
Копир
2005-12-03 04:33
2005.12.25
Русская и азиатская поэзия.


2-1133888372
i:word
2005-12-06 19:59
2005.12.25
Как сделать, что бы процедура передавала параметры?


2-1134152414
pussycat
2005-12-09 21:20
2005.12.25
Копирование файла


8-1121750641
ShotGun
2005-07-19 09:24
2005.12.25
Как прграммно изменить разрешение рисунка?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский