![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание отчетов.
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]Удалено модератором
Примечание: мат