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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

The_Immortal



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

Всего записей: 1542 | Зарегистр. 10-01-2009 | Отправлено: 12:29 21-06-2016 | Исправлено: The_Immortal, 12:49 21-06-2016
Cryogen2003



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

----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 13:17 21-06-2016
The_Immortal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cryogen2003, я просто думал, что это программно можно устроить, вот и тупил

Всего записей: 1542 | Зарегистр. 10-01-2009 | Отправлено: 13:31 21-06-2016
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
помогите разобраться. Есть приложение под Андроид и виндовс, использую FMX C++ XE10
Отчет делаю в рантайме
 

Код:
#if defined(_Windows)
#include "FMX.frxClass.hpp"
#include "FMX.frxDBSet.hpp"
#include "FMX.frxDesgn.hpp"
#endif
.........................................
 
    TfrxDBDataset *frxDBDs;
    TfrxReport *frxReport;
    TfrxMasterData * MasterDataBand;
 
    try {
        frxDBDs           = new TfrxDBDataset(Application);
        frxDBDs->DataSet  = dm->tRezyltat;
 
 
        frxReport             = new TfrxReport(Application);
        frxReport->StoreInDFM = false;
        frxReport->DataSet    = frxDBDs;
 
        frxReport->LoadFromFile(ExtractFilePath(ParamStr(0)) + "report.fr3");
 
        frxReport->PrepareReport(false);
        frxReport->ShowPreparedReport();
 
    }
    __finally {
            ...    }
 

и получаю ошибку  
[ilink32 Error] Fatal: Unable to open file 'FMX.FRXCLASS.OBJ'
Бросаю на форму компонент TfrxReport  - на винде компилируется на андроиде нет
Подскажите что не так делаю

Всего записей: 2128 | Зарегистр. 09-04-2003 | Отправлено: 18:04 28-06-2016
vavavol



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Уважаемые форумчане! После генерации отчёта использую экспорт в Excel. Тут всё стандартно: компонент TfrxXLSExport. После превьюшки при вызове кнопки "Сохранить" появляется пункт "Документ Excel (OLE)..." . Народ привык к этому. Но иногда качество экспорта желает быть лучше. Т.е. использовать свой код (оле или другое что-то). Можно как-то, чтобы пункт в превьюшке этот сохранился ("Документ Excel (OLE)..."), но при вызове его выполнялся свой код, а не выполнялся экспорт средствами TfrxXLSExport? Людей много и трудно приучить делать по-другому, тобишь вызывать экспорт в другом месте? Заранее спасибо за ответ

Всего записей: 181 | Зарегистр. 25-01-2006 | Отправлено: 16:37 08-08-2016
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vavavol
Можно написать наследника от родительского класса TfrxXLSExport. А потом зарегистрировать его вместо TfrxXLSExport.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 18:04 08-08-2016
mmlm10

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vavavol
Может вот это поможет?
 
https://www.fastreport.ru/ru/faq/13/120/

Всего записей: 454 | Зарегистр. 16-12-2003 | Отправлено: 21:01 08-08-2016
vavavol



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Благодарю, ребята! Буду копать

Всего записей: 181 | Зарегистр. 25-01-2006 | Отправлено: 08:28 09-08-2016
dallan



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Отчет простой
 
GroupHeader1
GroupHeader2
MasterData
GroupFooter2
GroupFooter1
 
 
GroupHeader2 - это группа техники. Как сделать так, чтобы не печатался GroupHeader2 если значение группы = 0.

Всего записей: 23 | Зарегистр. 19-01-2006 | Отправлено: 10:11 06-09-2016
AnViSe



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dallan
Проверку в OnBeforePrint у GroupHeader2 и по требованию GroupHeader2.Visible := False

Всего записей: 123 | Зарегистр. 10-11-2008 | Отправлено: 10:34 06-09-2016
dallan



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не помогает. Вообще не печатает группы  
 
Добавлено:
Вот программный код. Что не так?  
 

Код:
 
var
       List:TStringList;
       Listk:TStringList;            
       i:Integer;
       k:Integer;            
       M13:Real;              
       M12:Real;
       M11:Real;
       M23:Real;              
       M22:Real;
       M21:Real;
   
procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
begin
  if Engine.FinalPass then
  begin                  
     Memo1.Text := List[i];
     Memo3.Text := List[i+1];
     Memo4.Text := List[i+2];
     Memo5.Text := List[i+3];
     Memo6.Text := List[i+4];
     Memo7.Text := List[i+5];
     Memo8.Text := List[i+6];
     Memo9.Text := List[i+7];
     Memo10.Text := List[i+8];
     Memo11.Text := List[i+9];
     Memo12.Text := List[i+10];          
     Memo13.Text := List[i+11];
     Memo14.Text := List[i+12];
         
//     Memo12.Text := FormatMaskText('0,000',List[i]);                  
  end                        
end;
 
procedure GroupHeader2OnBeforePrint(Sender: TfrxComponent);
begin
  if <frxDBTabel."KOD_GRUP"> = 0 then
     GroupHeader2.Visible := False;                          
  if Engine.FinalPass then
  begin                  
     Memo21.Text := Listk[k];
     Memo22.Text := Listk[k+1];
     Memo23.Text := Listk[k+2];
     Memo24.Text := Listk[k+3];
     Memo25.Text := Listk[k+4];
     Memo26.Text := Listk[k+5];
     Memo27.Text := Listk[k+6];
     Memo28.Text := Listk[k+7];
     Memo29.Text := Listk[k+8];
     Memo30.Text := Listk[k+9];
     Memo31.Text := Listk[k+10];          
     Memo32.Text := Listk[k+11];
     Memo33.Text := Listk[k+12];
  end              
end;
 
procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
begin
       if not Engine.FinalPass then
       begin
          List.Add(FloatToStr(SUM(<frxDBTabel."VSEGODNI">,MasterData1,1)));
          List.Add(FloatToStr(SUM(<frxDBTabel."N_DNI">,MasterData1,1)));
          List.Add(FloatToStr(SUM(<frxDBTabel."RK_DNI">+<frxDBTabel."SR_DNI">+<frxDBTabel."RT_DNI">,MasterData1,1)));
          List.Add(FloatToStr(SUM(<frxDBTabel."RO_DNI">,MasterData1,1)));                    
          List.Add(FloatToStr(SUM(<frxDBTabel."TO_DNI">,MasterData1,1)));
          List.Add(FloatToStr(SUM(<frxDBTabel."RZ_DNI">,MasterData1,1)));
          List.Add(FloatToStr(SUM(<frxDBTabel."PV_DNI">,MasterData1,1)));
          List.Add(FloatToStr(SUM(<frxDBTabel."PP_DNI">,MasterData1,1)));
          List.Add(FloatToStr(SUM(<frxDBTabel."PG_DNI">,MasterData1,1)));
          M11 := SUM(<frxDBTabel."N_DNI">,MasterData1,1)/SUM(<frxDBTabel."VSEGODNI">,MasterData1,1);
          M11 := Round(M11*1000)/1000;                                                                                            
          List.Add(FloatToStr(M11));
          M12 := 1-(SUM(<frxDBTabel."RK_DNI">+<frxDBTabel."SR_DNI">+<frxDBTabel."RT_DNI">,MasterData1,1)+SUM(<frxDBTabel."RO_DNI">,MasterData1,1)+SUM(<frxDBTabel."TO_DNI">,MasterData1,1))/SUM(<frxDBTabel."VSEGODNI">,MasterData1,1);                            
          M12 := Round(M12*1000)/1000;                                                          
          List.Add(FloatToStr(M12));
          M13 := SUM(<frxDBTabel."GRUZPOD">*<frxDBTabel."VSEGODNI">,MasterData1,1);
          M13 := Round(M13*1000)/1000;                                  
          List.Add(FloatToStr(M13));
          List.Add(FloatToStr(SUM(<frxDBTabel."GRUZPOD">*<frxDBTabel."N_DNI">,MasterData1,1)));                    
                               
       end                                  
       else
       begin                    
          Inc(i);
          Inc(i);
          Inc(i);
          Inc(i);
          Inc(i);
          Inc(i);
          Inc(i);
          Inc(i);
          Inc(i);
          Inc(i);
          Inc(i);                    
          Inc(i);
          Inc(i);                    
       end                                
end;                  
 
procedure GroupFooter2OnBeforePrint(Sender: TfrxComponent);
begin
       if not Engine.FinalPass then
       begin
          Listk.Add(FloatToStr(SUM(<frxDBTabel."VSEGODNI">,MasterData1,1)));
          Listk.Add(FloatToStr(SUM(<frxDBTabel."N_DNI">,MasterData1,1)));
          Listk.Add(FloatToStr(SUM(<frxDBTabel."RK_DNI">+<frxDBTabel."SR_DNI">+<frxDBTabel."RT_DNI">,MasterData1,1)));
          Listk.Add(FloatToStr(SUM(<frxDBTabel."RO_DNI">,MasterData1,1)));                    
          Listk.Add(FloatToStr(SUM(<frxDBTabel."TO_DNI">,MasterData1,1)));
          Listk.Add(FloatToStr(SUM(<frxDBTabel."RZ_DNI">,MasterData1,1)));
          Listk.Add(FloatToStr(SUM(<frxDBTabel."PV_DNI">,MasterData1,1)));
          Listk.Add(FloatToStr(SUM(<frxDBTabel."PP_DNI">,MasterData1,1)));
          Listk.Add(FloatToStr(SUM(<frxDBTabel."PG_DNI">,MasterData1,1)));
          M21 := SUM(<frxDBTabel."N_DNI">,MasterData1,1)/SUM(<frxDBTabel."VSEGODNI">,MasterData1,1);
          M21 := Round(M21*1000)/1000;                                                                                            
          Listk.Add(FloatToStr(M21));
          M22 := 1-(SUM(<frxDBTabel."RK_DNI">+<frxDBTabel."SR_DNI">+<frxDBTabel."RT_DNI">,MasterData1,1)+SUM(<frxDBTabel."RO_DNI">,MasterData1,1)+SUM(<frxDBTabel."TO_DNI">,MasterData1,1))/SUM(<frxDBTabel."VSEGODNI">,MasterData1,1);                            
          M22 := Round(M22*1000)/1000;                                                          
          Listk.Add(FloatToStr(M22));
          M23 := SUM(<frxDBTabel."GRUZPOD">*<frxDBTabel."VSEGODNI">,MasterData1,1);
          M23 := Round(M23*1000)/1000;                                  
          Listk.Add(FloatToStr(M23));
          Listk.Add(FloatToStr(SUM(<frxDBTabel."GRUZPOD">*<frxDBTabel."N_DNI">,MasterData1,1)));                    
       end                                  
       else
       begin                    
          Inc(k);
          Inc(k);
          Inc(k);
          Inc(k);
          Inc(k);
          Inc(k);
          Inc(k);
          Inc(k);
          Inc(k);
          Inc(k);
          Inc(k);                    
          Inc(k);
          Inc(k);                    
       end
end;                  
 
procedure frxReportTabel2OnStartReport(Sender: TfrxComponent);
begin
       List := TStringList.Create;
       Listk := TStringList.Create;            
end;
 
procedure frxReportTabel2OnStopReport(Sender: TfrxComponent);
begin
       List.Free;
       Listk.Free;            
end;
 
procedure Page1OnBeforePrint(Sender: TfrxComponent);
begin
       i := 0;
       k := 0;            
end;
 
 
begin
 
end.
 
 

Всего записей: 23 | Зарегистр. 19-01-2006 | Отправлено: 11:18 06-09-2016
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dallan
Попробуйте заменить

Код:
  if <frxDBTabel."KOD_GRUP"> = 0 then  
     GroupHeader2.Visible := False;
                           
на

Код:
  if <frxDBTabel."KOD_GRUP"> = 0 then  
     GroupHeader2.Visible := False;                            
  else
     GroupHeader2.Visible := True;

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 12:51 06-09-2016
AnViSe



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

Цитата:
Не помогает. Вообще не печатает группы  

А раньше все время печатал?

Цитата:
  if <frxDBTabel."KOD_GRUP"> = 0 then  
     GroupHeader2.Visible := False;

Этот код отменил печать всех групп?

Всего записей: 123 | Зарегистр. 10-11-2008 | Отправлено: 13:15 06-09-2016
Dronton2

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

Цитата:
Этот код отменил печать всех групп?
Этот код мог отменить печать всех заголовков групп GroupHeader2. Видимо, это имелось ввиду.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 13:47 06-09-2016
dallan



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
УРА! Замечательно.
Все получилось. Большое спасибо.

Всего записей: 23 | Зарегистр. 19-01-2006 | Отправлено: 15:20 06-09-2016
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dallan
Ну, если всё заработало, то можно упростить код и поменять

Код:
 if <frxDBTabel."KOD_GRUP"> = 0 then  
     GroupHeader2.Visible := False;                            
  else  
     GroupHeader2.Visible := True;

на

Код:
GroupHeader2.Visible := <frxDBTabel."KOD_GRUP"> <> 0;

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 16:25 06-09-2016
GeXamin



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, как в коде посчитать сумму по группе. Пробую в  GroupFooterOnBeforePrint SUM(<Query1."SUM">,MasterData) - не дает ничего. При этом если это выполнить на странице в Memo - получаю результат. ??

Всего записей: 131 | Зарегистр. 07-09-2006 | Отправлено: 10:48 09-09-2016
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. Сделать переменную, в которую будет накапливаться сумма
2. В GroupHeaderOnBeforePrint обнулять эту переменную
3. В MasterDataOnBeforePrint добавлять очередное значение в эту переменную.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 11:58 09-09-2016
DYUMON



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
День добрый.
Можно ли как то при построение отчета делать определенные колонки в отчете пустыми, тоесть что бы пользователь видел только те колонки что ему можно видеть.

Всего записей: 84 | Зарегистр. 03-11-2009 | Отправлено: 13:20 12-09-2016
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DYUMON
В событии "OnBeforePrint" первого бэнда (например, бэнда ReportTitle) напишите:

Код:
Memo2.Visible := False;
Memo3.Visible := False;
...
где Memo2, Memo3, ... - названия объектов, которые нужно скрыть в отчёте.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 14:14 12-09-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 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