Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» FastReport

Автор: salexn1
Дата сообщения: 15.03.2012 16:51
MagistrAnatol
а если так
TDataSet(tVidklVkl).Filter....
Автор: MagistrAnatol
Дата сообщения: 15.03.2012 17:04
salexn1

Цитата:
TDataSet(tVidklVkl).Filter....
- неопределенный идентификатор


Добавлено:
Может кому пригодиться
TfrxCustomQuery(tVidklVkl).Filter

Добавлено:
Можно как-то в FastReport v4.12.1 Enterprise при установке в мемо свойства "Прятать повторяющиеся" сделать чтобы ячейки объединялись ?

Добавлено:
или может как построить мастер - деталь отчет вида
ФИО Любимые блюда
Петров Борщ
Вареники
Сидоров Сало
Еще раз сало
и т.д
Фио - записи мастера
Любимые блюда - записи детали
Автор: wasilissk
Дата сообщения: 16.03.2012 05:30
MagistrAnatol
Да вроде это и есть обычное поведение при мастер - деталь. А в чем сложность-то?
Автор: MagistrAnatol
Дата сообщения: 16.03.2012 09:07
wasilissk
Уже ни в чем, сделал через кросы, а сложность была в том что фаст для одинаковых ячеек значение скрывал но не объединял их.
Если брать чисто мастер-деталь - то как ты записи детали разместиш в одной строке с мастером а не ниже
Автор: wasilissk
Дата сообщения: 16.03.2012 09:20
MagistrAnatol
Элементарно - в детальном датасете запросить эти данные и отобразить.
Автор: MagistrAnatol
Дата сообщения: 16.03.2012 11:31
wasilissk

Цитата:
Элементарно - в детальном датасете запросить эти данные
- ето понятно

Цитата:
и отобразить
- каким образом разместить данные детали в одной строке с мастером?
ниже как в стандартном варианте отчете - без проблем - а мне надо чтобы на одну строку мастера в последней колонке отображалось одна или несколько записей датали.
При join объединении таблиц без проблем, но есть одно неудобство - дублирующие значения мастера
можно скрыть,а вот объединить дубликаты нельзя, в новостях фаста читал что такой функционал реализуют в 5 версии, хотя для дот нет варианта такое уже давно.
Я по-извращался с крос отчетом - не совсем то но подойдет



Добавлено:
Есть ещо такой вопрос - можно в фасте реализовать такой функционал - есть куча клиентских тачек и чтобы не хранить шаблоны отчетов на каждом клиенте сделать что-то типа сервера отчетов - клиент запрашивает шаблон с сервера и строит себе отчет???
Автор: salexn1
Дата сообщения: 16.03.2012 11:50
MagistrAnatol
что значит "хранить на каждом клиенте"?
у каждого клиента в папке "Reports" лежат файлы шаблонов отчетов?????

вариантов много:
1) простой - хранить в базе и вытягивать шаблоны из базы
2) сделать свой сервер хранилища, чтобы не расшаривать каталог, и отдавать файлы
и много разных вариантов, только подумать надо
Автор: Czechoslovak
Дата сообщения: 16.03.2012 11:55

Цитата:
Есть ещо такой вопрос - можно в фасте реализовать такой функционал - есть куча клиентских тачек и чтобы не хранить шаблоны отчетов на каждом клиенте сделать что-то типа сервера отчетов - клиент запрашивает шаблон с сервера и строит себе отчет???


FASTREPORT® SERVER - сервер отчётов

FastReport Server дополняет комплекс программ Fast Reports Inc. FastReport Server - мощное и полнофункциональное решение для организации корпоративной отчётности, содержащее все инструменты для создания и доставки отчётов.
Автор: wasilissk
Дата сообщения: 16.03.2012 12:01
MagistrAnatol
Master:
select mastername, id from mastertbl
Detail:
select mastername, detailname from detailtbl, mastertbl mtbl where masterid = mtbl.id

MasterBand
скрываем
DetailBand
Mastername | DetailBand
Mastername "Suppress repeated values".
Автор: MagistrAnatol
Дата сообщения: 16.03.2012 12:03
salexn1

Цитата:
у каждого клиента в папке "Reports" лежат файлы шаблонов отчетов?????
ага

Цитата:
чтобы не расшаривать каталог
в том -то и проблема не хочется расшаривать

Цитата:
простой - хранить в базе и вытягивать шаблоны из базы
- в принципе вариант -загнать отчет в блоб-и потом вытаскивать блоб в файлик и готовить отчет, напрямую мать не получится


Добавлено:
wasilissk

Цитата:
Mastername "Suppress repeated values"

и повторяющиеся ячейки получаться объединенными? при join объединении таблиц получаем кучу пустых ячеек
Автор: jonikDk
Дата сообщения: 16.03.2012 12:23
MagistrAnatol

Цитата:
- в принципе вариант -загнать отчет в блоб-и потом вытаскивать блоб в файлик и готовить отчет, напрямую мать не получится

А почему не получится ?? Вроде как всё решаемо.
Автор: MagistrAnatol
Дата сообщения: 16.03.2012 12:31
jonikDk

Цитата:
Вроде как всё решаемо

а подробнее, у меня база Firebird 2.5
Первый раз понятно придется заганять руками, а потом как достать конкретный шаблон??

Автор: PowerChute
Дата сообщения: 16.03.2012 12:34
MagistrAnatol
Я 9 марта давал код, который из базы загружает шаблон. Код рабочий, уже работает несколько лет без внесения изменений.
Могу выложить как его туда загнать.
Автор: salexn1
Дата сообщения: 16.03.2012 12:39
MagistrAnatol
Странно, всю жизнь только и делал, что хранил и доставал шаблон из базы и сувал прямо в Fast без файликов, через Stream.

Как-то так

TBLOBField(DataSet.FieldByName('REPORT_TEMPLATE')).SaveToStream(Stream);
Stream.Position := 0;
frxReport.LoadFromStream(Stream);
Автор: MagistrAnatol
Дата сообщения: 16.03.2012 12:45
PowerChute
давайте, заранее пасиб, кидайте куда вам удобно, моно на мыло - под ковриком
Автор: salexn1
Дата сообщения: 16.03.2012 12:49
PowerChute
В вашем коде можно нормально заоптимайзить...
Вместо
while not tbl_Report.Eof do begin
if tbl_Report.FieldbyName('rpt_ID').AsInteger = _DocN then begin
Stream := TMemoryStream.Create;
TBlobField(tbl_Report.FieldbyName('rpt_Blob')).SaveToStream(Stream);
Stream.Position := 0;
if Stream.Size > 0 then begin
fr_Report.LoadFromStream(Stream);
fr_Report.FileName := tbl_Report.FieldbyName('rpt_Remark').AsString;
end;
Stream.Free;
break;
end;
tbl_Report.Next;
end;

написать

if tbl_Report.Locate('rpt_ID', _DocN, []) then
begin
Stream := TMemoryStream.Create;
try
TBlobField(tbl_Report.FieldbyName('rpt_Blob')).SaveToStream(Stream);
Stream.Position := 0;
if Stream.Size > 0 then
begin
fr_Report.LoadFromStream(Stream);
fr_Report.FileName := tbl_Report.FieldbyName('rpt_Remark').AsString;
end;
finally
Stream.Free;
end
end
Автор: MagistrAnatol
Дата сообщения: 16.03.2012 12:50
salexn1
чет я провтыкал насчет
Цитата:
SaveToStream

если я буду шаманить сам шаблон то шаблон сохраняем в стрим а стрим уже в базу вроде так?

Автор: Czechoslovak
Дата сообщения: 16.03.2012 12:58

Цитата:
Цитата:
простой - хранить в базе и вытягивать шаблоны из базы
- в принципе вариант -загнать отчет в блоб-и потом вытаскивать блоб в файлик и готовить отчет, напрямую мать не получится

Все получиться на прямую
примерно так
Stream := ...... Table.CreateBlobStream(Поле, bmRead);
Fastreport.LoadFromStream(Stream);
Автор: salexn1
Дата сообщения: 16.03.2012 12:58
MagistrAnatol
Точно

Код:
Stream := TMemoryStream.Create;
try
Report.SaveToStream(Stream);
Stream.Poistion := 0;
DataSet.Edit;//DataSet.Append;
TBLOBField(DataSet.FieldByName('REPORT_TEMPLATE')).LoadFromStream(Stream);
DataSet.Post;
finally
Stream.Free;
end
Автор: MagistrAnatol
Дата сообщения: 16.03.2012 12:58
salexn1

Цитата:
fr_Report.FileName := tbl_Report.FieldbyName('rpt_Remark').AsString;

что делает ета строка - имя темпового файла для отчета?



Добавлено:

Цитата:
rpt_Remark
надо добавлять".fr3" ?


Добавлено:
да и тип блоба текст или двоичный?
Автор: Czechoslovak
Дата сообщения: 16.03.2012 13:17

Цитата:
да и тип блоба текст или двоичный?

По моему БОЛБу по барабану так же как и потоку, лично использую тест
Автор: PowerChute
Дата сообщения: 16.03.2012 17:31
MagistrAnatol

function TDM_II.fr_DesignerSaveReport(Report: TfrxReport; SaveAs: Boolean): Boolean;
var
Stream : TMemoryStream;
Found : Boolean;
begin
Result := False;
if SaveAs then begin
with DM_Style.SaveDialog do begin
Filter := 'Файл шаблона (*.fr3)|*.fr3';
DefaultExt := 'fr3';
FileName := '*.fr3';
if Execute then fr_Report.SaveToFile (FileName);
end;
end else begin // if else SaveAs
Found := False;
tbl_Report.First;
while not tbl_Report.Eof do begin
if tbl_Report.FieldbyName('rpt_ID').AsInteger = vr_NumTemplate then begin
Found := True;
break;
end;
tbl_Report.Next;
end;

if Found then tbl_Report.Edit
else tbl_Report.Append;
tbl_Report.FieldbyName('rpt_ID').AsInteger := vr_NumTemplate;
if fr_Report.FileName <> 'Untitled.fr3' then
tbl_Report.FieldbyName('rpt_Remark').AsString := ChangeFileExt(ExtractFileName (fr_Report.FileName), gc_NoChar);
Stream := TMemoryStream.Create;
fr_Report.SaveToStream(Stream);
Stream.Position := 0;
TBlobField(tbl_Report.FieldbyName('rpt_Blob')).LoadFromStream(Stream);
Stream.Free;
tbl_Report.Post;
Result := True;
end; // if else SaveAs
end;

fr_Report.FileName := tbl_Report.FieldbyName('rpt_Remark').AsString;
это просто комментарий для шаблона
Автор: MagistrAnatol
Дата сообщения: 20.03.2012 09:07
Всем пасиб за помощь, но походу возник другой вопрос - пытаюсь сделать дизайнер отчетов для работы
с отчетами в базе на основе примера от фаста. Если открываю шаблон из файла - все норм, но при открытии из базы получаю
First chance exception at $006D6A02. Exception class $C0000005 with message 'access violation at 0x006d6a02: read of address 0xfffffbf8'. Process Project1.exe (1568)
ругается на 844 строку в frxDesgnEditors
if Pict.Graphic = nil then
маленькие шаблоны грузятся немного быстрее, а вот большие при загрузке из файла грузятся намного быстрее чем из стрима
Вот код загрузки шаблона из стрима
[more]

Код: [no]
procedure TForm1.Button2Click(Sender: TObject);
var
Stream : TMemoryStream;
begin
Stream := TMemoryStream.Create;
try
TBlobField(tFrxTempl.FieldbyName('TEMPATE_TEXT')).SaveToStream(Stream);
Stream.Position := 0;
if Stream.Size > 0 then
begin
frxReport1.LoadFromStream(Stream);
frxReport1.FileName := tFrxTempl.FieldbyName('TEMPLATE_FILE_NAME').AsString;
end;
finally
Stream.Free;
end
end;
[/no]
Автор: mdid
Дата сообщения: 23.03.2012 15:08
народ..а можно как то заставить движ открывать отчеты не модально? крестьяне бунтуют и требуют несколько отчетов(
Автор: wasilissk
Дата сообщения: 23.03.2012 16:28
mdid
F1 TfrxReport.Preview
Автор: mdid
Дата сообщения: 23.03.2012 17:42
вместо ShowReport; писнул ShowPreparedReport;
и убрал галку с modal..и все чудесно...если не менять ShowReport; на ShowPreparedReport;
то отчет пуcтой..точнее открывается только оболочка без отчета
Автор: wasilissk
Дата сообщения: 23.03.2012 20:31
mdid
А вообще TfrxReport.Preview можно задать свою форму просмотра.
Автор: mdid
Дата сообщения: 27.03.2012 11:20
моя затея успешно провалилась)) кинул взор на frxPreview...но нет верхнего меню...мне самому кнопки рисовать или есть какой то флаг?...а то хоть убейте не могу найти
Автор: wasilissk
Дата сообщения: 27.03.2012 11:49
mdid
Самому.
Автор: mdid
Дата сообщения: 28.03.2012 14:43
4.12.1
при экспорте в эксель Invalid variant operation
пробовал ставить перед формированием отчета CoInitialize(nil); но беда меня не покинула..что можно еще сделать?
отбой...я просто не к той frxReport обратился(.... вечер... что тут скажешь

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859

Предыдущая тема: CBuilder и копирование файла


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.