Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » FastReport

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93

Открыть новую тему     Написать ответ в эту тему

jonikDk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

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

А почему не получится ?? Вроде как всё решаемо.

Всего записей: 1599 | Зарегистр. 01-03-2004 | Отправлено: 13:23 16-03-2012
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
jonikDk

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

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

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 13:31 16-03-2012
PowerChute



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
Я 9 марта давал код, который из базы загружает шаблон. Код рабочий, уже работает несколько лет без внесения изменений.
Могу выложить как его туда загнать.

----------
Хочешь всего и сразу, а получаешь ничего и постепенно.

Всего записей: 516 | Зарегистр. 13-10-2004 | Отправлено: 13:34 16-03-2012
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
Странно, всю жизнь только и делал, что хранил и доставал шаблон из базы и сувал прямо в Fast без файликов, через Stream.
 
Как-то так
 
TBLOBField(DataSet.FieldByName('REPORT_TEMPLATE')).SaveToStream(Stream);
Stream.Position := 0;
frxReport.LoadFromStream(Stream);

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 13:39 16-03-2012 | Исправлено: salexn1, 13:42 16-03-2012
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
PowerChute
давайте, заранее пасиб, кидайте куда вам удобно, моно на мыло - под ковриком

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 13:45 16-03-2012
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 13:49 16-03-2012
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
salexn1
чет я провтыкал насчет
Цитата:
SaveToStream

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

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 13:50 16-03-2012
Czechoslovak



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

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

Все получиться на прямую
примерно так
Stream :=  ...... Table.CreateBlobStream(Поле, bmRead);
Fastreport.LoadFromStream(Stream);

Всего записей: 175 | Зарегистр. 27-06-2007 | Отправлено: 13:58 16-03-2012
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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  
 


Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 13:58 16-03-2012
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
salexn1

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

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

Цитата:
rpt_Remark
надо добавлять".fr3" ?
 
 
Добавлено:
да и тип блоба текст или двоичный?

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 13:58 16-03-2012
Czechoslovak



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

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

По моему БОЛБу по барабану так же как и потоку, лично использую тест

Всего записей: 175 | Зарегистр. 27-06-2007 | Отправлено: 14:17 16-03-2012
PowerChute



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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;
это просто комментарий для шаблона

----------
Хочешь всего и сразу, а получаешь ничего и постепенно.

Всего записей: 516 | Зарегистр. 13-10-2004 | Отправлено: 18:31 16-03-2012
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем пасиб за помощь, но походу возник другой вопрос - пытаюсь сделать дизайнер отчетов для работы
с отчетами в базе на основе примера от фаста. Если открываю шаблон  из файла - все норм, но при открытии из базы получаю  
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
маленькие шаблоны грузятся немного быстрее, а вот большие при загрузке из файла грузятся намного быстрее чем из стрима
Вот код загрузки шаблона из стрима
Подробнее...
вот скрипт таблички
Подробнее...
В чем может быть прикол?? и как проверить что шаблон уже загрузился в редактор??
 
Добавлено:
Ето какая-то хрень с примером дизайнера фастрепорта, получается если я открываю дизайнер как отдельное окно - все отлично работает, а вот если как в примере дизайнер размещается ТабШите
получаю вагон ошибок.
Может У кого-то есть рабочий пример дизайнера для работы с шаблонами из таблицы и размещением
дизайнера на главной форме а не в отдельном окне???

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 10:07 20-03-2012
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
народ..а можно как то заставить движ открывать отчеты не модально? крестьяне бунтуют и требуют несколько отчетов(

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 16:08 23-03-2012
wasilissk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mdid
F1 TfrxReport.Preview

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 17:28 23-03-2012
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вместо ShowReport; писнул ShowPreparedReport;
и убрал галку с modal..и все чудесно...если не менять ShowReport; на ShowPreparedReport;
то отчет пуcтой..точнее открывается только оболочка без отчета

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 18:42 23-03-2012 | Исправлено: mdid, 23:01 23-03-2012
wasilissk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mdid
А вообще TfrxReport.Preview можно задать свою форму просмотра.

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 21:31 23-03-2012
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
моя затея успешно провалилась)) кинул взор на frxPreview...но нет верхнего меню...мне самому кнопки рисовать или есть какой то флаг?...а то хоть убейте не могу найти

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 12:20 27-03-2012
wasilissk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mdid
Самому.

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 12:49 27-03-2012
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4.12.1
при экспорте в эксель  Invalid variant operation
пробовал ставить перед формированием отчета CoInitialize(nil); но беда меня не покинула..что можно еще сделать?
отбой...я просто не к той frxReport обратился(.... вечер... что тут скажешь

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 15:43 28-03-2012 | Исправлено: mdid, 16:36 28-03-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » FastReport


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru