Форум: "Начинающим";
Текущий архив: 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