Отчеты в FastReport
Модераторы: m0p3e, edward_K, Модераторы
Re: Отчеты в FastReport
Пробовала я что-то сделать. Получился вот такой интерфейсedward_K писал(а):А зачем вам лицензия не консоль управления?
Вообще там сейчас какая тулсятина вышла в патчах для просмотра и редактирования форм смотрите FREASYEDIT_EXE_81020.txt.
А без нее включаете Forms - Fcnev=On и где можно в списке отчетов редактируете и сохраняете под своим именем(я бы советовал кроме ресурса еще и в файл сохранить - потом можно frres компилить). Ну там будет сложнее, чем в компиляторе форм наверное
- надо правильно создать разделы данных - зато рисовать удобней. Доступные таблицы из фастрепорта посмотрите.
Код: Выделить всё
#component "L_SF"
alter interface JOURNGETSETSF;
create view lbs_1 as select *
from synonym schfact schfact_1, basedoc, katnazna
where ((
comp(FRGETSCHFACT.nrec) == schfact_1.nrec
and schfact_1.cbasedoc == basedoc.nrec
and basedoc.cnazna == katnazna.nrec));
overload
DataStream DTS;
end;
DataStream DTS
(
Table inherited::FRSETSCHFACT
(
[SetNaz] lbs_1.katnazna.name;
);
)
end; // DataStream
end.
При этом гарантировано, что каждая выставленная с/ф связана с ДО и у каждого ДО ссылка на KatNazna не пустая.
Помогите, пожалуйста!!!
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Отчеты в FastReport
а ссылки то в cbasedoc есть? просто я обычно через сопроводительный добираюсь... иногда бывает поля есть, а ссылки пустые... (в других таблицах).
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Отчеты в FastReport
если ваше логическая таблица не совпадает с главной(это можно в консоли управления глянуть), то вам нужно по ней позиционироваться принудительно. Да и вообще лучше всегда позиционироваться. Не очень хорошо в уcловиях юзать таблу c другого view
Заодно сможете отконтролировать - а есть ли что в текущий момент.
DataStream
(..
table table_main
( ...
);
table table_sp
( ...
);
)
HandleEvent table table_main
cmOnProcess:
{ ....
}
end;
HandleEvent table table_sp
cmOnProcess:
{ ....
}
end;
end;//DataStream
Заодно сможете отконтролировать - а есть ли что в текущий момент.
DataStream
(..
table table_main
( ...
);
table table_sp
( ...
);
)
HandleEvent table table_main
cmOnProcess:
{ ....
}
end;
HandleEvent table table_sp
cmOnProcess:
{ ....
}
end;
end;//DataStream
Re: Отчеты в FastReport
Извините, не было доступа к сети некоторое время В КУ мне, кроме управления репозитарием, ничего не доступно (лицензии нет).edward_K писал(а):если ваше логическая таблица не совпадает с главной(это можно в консоли управления глянуть), то вам нужно по ней позиционироваться принудительно. Да и вообще лучше всегда позиционироваться. Не очень хорошо в уcловиях юзать таблу c другого view
Заодно сможете отконтролировать - а есть ли что в текущий момент.
DataStream
(..
table table_main
( ...
);
table table_sp
( ...
);
)
HandleEvent table table_main
cmOnProcess:
{ ....
}
end;
HandleEvent table table_sp
cmOnProcess:
{ ....
}
end;
end;//DataStream
Скажите, а я не должна в Handleevent писать волшебное слово inherited? и если должна, то где? Сейчас у меня написалось так:
Код: Выделить всё
#component "L_SF"
alter interface JOURNGETSETSF;
create view lbs_1 as select *
from synonym schfact schfact_1, basedoc, katnazna
where ((
comp(FRGETSCHFACT.nrec) == schfact_1.nrec
and schfact_1.cbasedoc == basedoc.nrec
and basedoc.cnazna == katnazna.nrec));
overload
DataStream DTS;
end;
DataStream DTS
(
Table inherited::FRSETSCHFACT
(
[SetNaz] lbs_1.katnazna.name;
);
)
Handleevent table FRSETSCHFACT
cmOnProcess: {
if lbs_1.getfirst basedoc = tsOK then {}
}
end;
end; // DataStream
end.
Re: Отчеты в FastReport
Удалось мне все победить. в итоге получился вот такой код:
И вроде все замечательно, появились в FR-отчете новые колонки с данными. Но теперь отчет надо научиться фильтровать по значениям этих колонок (сами-то значения нужны именно для фильтрации). Excel-фильтр (после экспорта) работает криво, да и бухгалтерию лишний раз напрягать не хочется. Вариантов два:
- либо придумать что-то вроде фильтрации в самом отчете (в FCom я обычно для этого добавляла интерфейс выбора значения фильтра и гасила вывод ненужных данных)
- либо лезть дальше в сам галактический интерфейс, на событие, генерируемое кнопкой "Продолжить" вешать интерфейс выбора значения фильтра и каким-то образом гасить вывод в DataStream информации, не отвечающей заданным условиям.
Оба пути для меня - тайна за семью печатями, очень нужна помощь!!!
Код: Выделить всё
#component 'L_SF'
alter interface JOURNGETSETSF;
var crec: comp;
create view lbs_1 as select *
from synonym schfact schfact_1,
synonym basedoc basedoc_1,
synonym katnazna katnazna_1
where ((
crec == schfact_1.nrec
and schfact_1.cbasedoc == basedoc_1.nrec
and basedoc_1.cnazna == katnazna_1.nrec))
;
overload
DataStream DTS;
end;
DataStream DTS
(
Table inherited::FRSETSCHFACT
(
[SetNaz] lbs_1.katnazna_1.name;
);
Table inherited::FRGETSCHFACT
(
[GetNaz] lbs_1.katnazna_1.name;
);
)
Handleevent table FRSETSCHFACT
cmOnProcess: {
crec:=FRSETSCHFACT.cschf;
if lbs_1.getfirst schfact_1 = tsOK then
if lbs_1.getfirst basedoc_1 = tsOK then
if lbs_1.getfirst katnazna_1 = tsOK then {}
}
end;
Handleevent table FRGETSCHFACT
cmOnProcess: {
crec:=FRGETSCHFACT.cschf;
if lbs_1.getfirst schfact_1 = tsOK then
if lbs_1.getfirst basedoc_1 = tsOK then
if lbs_1.getfirst katnazna_1 = tsOK then {}
}
end;
end; // DataStream
end.
- либо придумать что-то вроде фильтрации в самом отчете (в FCom я обычно для этого добавляла интерфейс выбора значения фильтра и гасила вывод ненужных данных)
- либо лезть дальше в сам галактический интерфейс, на событие, генерируемое кнопкой "Продолжить" вешать интерфейс выбора значения фильтра и каким-то образом гасить вывод в DataStream информации, не отвечающей заданным условиям.
Оба пути для меня - тайна за семью печатями, очень нужна помощь!!!
Re: Отчеты в FastReport
ОтличноSheinina писал(а):Удалось мне все победить.
Проще сделать фильтрацию в самом отчете. Для этого у объекта отчета MasterData1 : TfrxMasterData в инспекторе свойств задайте событие OnBeforePrint (двойным кликом). На вкладке "Код" задайте обработчик этого события примерно так:Sheinina писал(а): И вроде все замечательно, появились в FR-отчете новые колонки с данными. Но теперь отчет надо научиться фильтровать по значениям этих колонок (сами-то значения нужны именно для фильтрации). Excel-фильтр (после экспорта) работает криво, да и бухгалтерию лишний раз напрягать не хочется. Вариантов два:
- либо придумать что-то вроде фильтрации в самом отчете (в FCom я обычно для этого добавляла интерфейс выбора значения фильтра и гасила вывод ненужных данных)
- либо лезть дальше в сам галактический интерфейс, на событие, генерируемое кнопкой "Продолжить" вешать интерфейс выбора значения фильтра и каким-то образом гасить вывод в DataStream информации, не отвечающей заданным условиям.
Оба пути для меня - тайна за семью печатями, очень нужна помощь!!!
Код: Выделить всё
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
if <Table."Field"> = 'текст' then // здесь программируете нужное вам условие фильтрации
MasterData1.Visible := false
else
MasterData1.Visible := true;
end;
Re: Отчеты в FastReport
Всем изучающим FastReport рекомендую не полениться и прочитать документацию по FR там хорошо описаны основные принципы.
Справка вызывается из меню в дизайенере отчета или по клавише F1.
Этот же документ есть на нашем FTP ftp://ftp.galaktika.ru/pub/support/gala ... FRUser.pdf
И на сайте производителя http://www.fast-report.com/pbc_download ... ual-ru.pdf
Справка вызывается из меню в дизайенере отчета или по клавише F1.
Этот же документ есть на нашем FTP ftp://ftp.galaktika.ru/pub/support/gala ... FRUser.pdf
И на сайте производителя http://www.fast-report.com/pbc_download ... ual-ru.pdf
Re: Отчеты в FastReport
Массу материалов и примеров по FastReport для Галактики найдете на моей страничке http://code.google.com/p/laalaa/downloads/list
Re: Отчеты в FastReport
Кроме того на сервисе YouTube компания Fast Reports опубликовала массу обучающих видео роликов: https://www.youtube.com/user/FastReportsInc
Рекомендую посмотреть на досуге.
Рекомендую посмотреть на досуге.
Re: Отчеты в FastReport
Спасибо огромное! И за подсказку, и за информацию, где чего почитать!
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Отчеты в FastReport
я бы ссылки эти в опыт в ветку про FR залепил... а то иногда ищешь что-нибудь и блин поиском не находится или не так ищу.
а вообще чем больше отчетов на FR делаю, тем понимаю что всё проще и проще получается делать.
а вообще чем больше отчетов на FR делаю, тем понимаю что всё проще и проще получается делать.
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Отчеты в FastReport
сделал отчетик, ввиду того что он очень большой на А4 в альбоме, там всё очень мелко.
Как сделать чтобы при формировании он автоматом ставил размер 150% ? сохраняю шаблон в таком виде, формирую - 100%
Как сделать чтобы при формировании он автоматом ставил размер 150% ? сохраняю шаблон в таком виде, формирую - 100%
Re: Отчеты в FastReport
Вы можете управлять окном просмотра из скрипта отчета. Через поля Report.PreviewOptions. Добавьте например в блок begin end. следующий фрагмент кода:
Код: Выделить всё
begin
// прятать лишние кнопки
Report.PreviewOptions.AllowEdit := false;
Report.PreviewOptions.Buttons := 1 + 16 + 32 + 64 + 128 + 1024 + 4096 + 8192 + 16384;
// масштаб просмотра
Report.PreviewOptions.Zoom := 1.50;
end.
-
- Постоянный гость
- Сообщения: 74
- Зарегистрирован: 23 июн 2007, 23:07
- Откуда: ТопСофт, Минск
Re: Отчеты в FastReport
В документации по процедуре RunFReportByGroup следующее
Назначение
Процедура RunFReportByGroup работает аналогично вызову RunFReport с пустым вторым параметр и третьим false:
RunFReport(dstream, '', false);
Однако вместо общего списка форм отображаются только те формы, для которых назначен один из идентификаторов из списка GroupList. Группы, к которым относится отчет, назначаются при проектировании формы в дизайнере FastReport.
Описание
procedure RunFReportByGroup (dstream : longInt; groupList : string);
Параметры
dstream - имя потока данных. Идентификатор, должен соответствовать имени одного из потоков данных, объявленных в интерфейсе.
groupList - список групп для фильтра через запятую.
Пример
RunFReportByGroup(MyStream, 'aaa');
RunFReportByGroup(MyStream, 'aaa,bbb');
RunFReportByGroup(MyStream, 'Русская группа');
Рассказал бы еще кто-нибудь как эти группы назначаются при проектировании формы в дизайнере FastReport.
Назначение
Процедура RunFReportByGroup работает аналогично вызову RunFReport с пустым вторым параметр и третьим false:
RunFReport(dstream, '', false);
Однако вместо общего списка форм отображаются только те формы, для которых назначен один из идентификаторов из списка GroupList. Группы, к которым относится отчет, назначаются при проектировании формы в дизайнере FastReport.
Описание
procedure RunFReportByGroup (dstream : longInt; groupList : string);
Параметры
dstream - имя потока данных. Идентификатор, должен соответствовать имени одного из потоков данных, объявленных в интерфейсе.
groupList - список групп для фильтра через запятую.
Пример
RunFReportByGroup(MyStream, 'aaa');
RunFReportByGroup(MyStream, 'aaa,bbb');
RunFReportByGroup(MyStream, 'Русская группа');
Рассказал бы еще кто-нибудь как эти группы назначаются при проектировании формы в дизайнере FastReport.