Страница 7 из 8
Re: Отчеты в FastReport
Добавлено: 01 мар 2016, 09:28
RAJAH
Доброго времени суток!
Наконец, дошёл до использования DB-CrossTab. В связи с этим возникли 2 вопроса: 1) почему время от времени отчёт выдаёт ошибку "Argument out of range" (скрипт пока пуст)? 2) как столбцы сортировать по номеру месяца, а выводить название, ибо, если в редактировании DB-CrossTab пишу FormatDateTime('mmmm',EncodeDate(2016,<PERER."MM">,1)), то первым оказывается "Август" по алфавиту.
Re: Отчеты в FastReport
Добавлено: 02 мар 2016, 10:21
Алексей
Ошибку не встречал, но судя по всем... данные вылетают за возможные границы.
По месяцам - может добавлять в текст номер месяца потом его название? Так отсортирует верно.
Re: Отчеты в FastReport
Добавлено: 02 мар 2016, 10:51
RAJAH
Алексей писал(а):данные вылетают за возможные границы.
Да, но какие данные? Странно, что иногда получаешь ошибку, иногда нет, на одном и том же отчёте.
Re: Отчеты в FastReport
Добавлено: 02 мар 2016, 11:39
edward_K
При использовании крос таблиц важно следить за полнотой в наборе данных.
Ошибку не видел, но сталкивался с тем, что отчет вообще ничего не выводил, если не было данных по какому то столбцу в такой то строке. Пришлось доформировывать их. Что же касается вычислении, то это можно делать в событиях на печать поля.
Вот пример с вычислением среднего значения в итоги по строкам/столбцам.
Код: Выделить всё
procedure DBCross1OnPrintCell(Memo: TfrxMemoView; RowIndex, ColumnIndex, CellIndex: Integer; RowValues, ColumnValues, Value: Variant);
begin
if Length(RowSums) < (RowIndex + 1) then
begin
SetLength(RowSums, (RowIndex + 1));
SetLength(RowCounts, (RowIndex + 1));
end;
if Length(ColSums) < (ColumnIndex + 1) then
begin
SetLength(ColSums, (ColumnIndex + 1));
SetLength(ColCounts, (ColumnIndex + 1));
end;
if DBCross1.IsTotalColumn(ColumnIndex) then
begin
if RowCounts[RowIndex] > 0.0000001 then
Begin
Memo.Text := Format('%2.2n', [RowSums[RowIndex] / RowCounts[RowIndex]]);
AllSumAvg := AllSumAvg + (RowSums[RowIndex] / RowCounts[RowIndex]);
End;
end
else if DBCross1.IsTotalRow(RowIndex) then
begin
if ColCounts[ColumnIndex] > 0.0000001 then
Memo.Text := Format('%2.2n', [ColSums[ColumnIndex] / ColCounts[ColumnIndex]]);
end
else
begin
if Value > 0.0000001 then
begin
RowSums[RowIndex] := RowSums[RowIndex] + Value;
RowCounts[RowIndex] := RowCounts[RowIndex] + 1;
ColSums[ColumnIndex] := ColSums[ColumnIndex] + Value;
ColCounts[ColumnIndex] := ColCounts[ColumnIndex] + 1;
end;
end;
if ( DBCross1.IsGrandTotalColumn(ColumnIndex) and DBCross1.IsGrandTotalRow(RowIndex) ) then
Begin
Memo.Text := Format('%2.2n', [AllSumAvg / (DBCross1.RowCount - 1)]);
End;
end; // procedure DBCross1OnPrintCell
Re: Отчеты в FastReport
Добавлено: 20 май 2016, 07:25
Алексей
LaaLaa писал(а):Алексей писал(а):Есть ли техническая возможность из випа вызвать не генератор отчётов Fastreport, а указав конкретный отчёт послать его сразу на принтер, минуя диалоговое окно?
Набор таких функций почти готов. Планируется выпустить в Атлантисе 5.5.23.0
После последних обновлений (буквально позавчера), функционал отсылки отчета на принтер без диалога сломался... функция
FRSetParameters выдаёт false. Кто-нибудь сталкивался и как пофиксить? Объём путевых листов большой, диалог не нужен.
Код брали из примера в документации.
Код: Выделить всё
var PrintParam: frxPrintParam;
ClearAdvRecord(PrintParam);
FRGetDefaultParameters(frPrintParam, PrintParam);
PrintParam.ShowDialog := False;
[b]FRSetParameters[/b](FReport, frPrintParam, PrintParam);
FRPrintReport(FReport);
Re: Отчеты в FastReport
Добавлено: 23 май 2016, 17:45
Алексей
Проблема зарегистрирована в Систему ПИР 101.59308
Re: Отчеты в FastReport
Добавлено: 27 май 2016, 12:24
Алексей
После замены FRRecordDefinition.vih на актуальный, заработало.
Re: Отчеты в FastReport
Добавлено: 15 окт 2016, 13:47
Алексей
Настроил отчет в FR. Установил у полей в masterdata значение "растягиваемый до максимальной высоты" и "переносить слова". Получаю отчёт, название МЦ вывелось в поле в 4 строчки, всё читаемо, печатаемо. Но при выгрузке отчета в эксель файл - полученная ячейка как бы скрадывает часть нижней строчки, т.е. нижняя, четвёртая строка видна наполовину. Если щёлкнуть на номер ячейки (авторасширение) - то ячейка раздвигается и весь текст становится виден.
Как сделать чтобы текст при получении отчета в экселе сразу был виден весь в ячейке? Поискал разные настройки но так ничего и не нашел.
Re: Отчеты в FastReport
Добавлено: 15 окт 2016, 15:57
rmozgov
Алексей писал(а):Настроил отчет в FR. Установил у полей в masterdata значение "растягиваемый до максимальной высоты" и "переносить слова". Получаю отчёт, название МЦ вывелось в поле в 4 строчки, всё читаемо, печатаемо. Но при выгрузке отчета в эксель файл - полученная ячейка как бы скрадывает часть нижней строчки, т.е. нижняя, четвёртая строка видна наполовину. Если щёлкнуть на номер ячейки (авторасширение) - то ячейка раздвигается и весь текст становится виден.
Как сделать чтобы текст при получении отчета в экселе сразу был виден весь в ячейке? Поискал разные настройки но так ничего и не нашел.
Это происходит из-за того что в Excel нету межстрочного интервала. При использовании ячеек с многострочным текстом необходимо у них выставлять свойство LineSpacing в значение 6.
Re: Отчеты в FastReport
Добавлено: 17 окт 2016, 08:37
Алексей
Вот спасибо, помогло! Я вроде смотрел смотрел свойства, и не увидел
Держите репуташку
Re: Отчеты в FastReport
Добавлено: 08 ноя 2016, 13:48
RAJAH
Приветствую!
У меня был отчёт с cross-tab, где в заголовках строк цеха/отделы из KATPODR, а в заголовках столбцов - месяцы. Теперь пришло требование указывать иерархию подразделений (KATPODR.CPODR = KATPODR.NREC). Ломаю голову, как впихнуть эту информацию, ведь уровень вложенности и вообще присутствие подразделения в отчёте заранее неизвестны. Можно, конечно, помучаться и в Excel выводить, но cross-tab так удобен...
Re: Отчеты в FastReport
Добавлено: 08 ноя 2016, 14:36
edward_K
Ломаю голову, как впихнуть эту информацию, ведь уровень вложенности и вообще присутствие подразделения в отчёте заранее неизвестны
Для кросс таблиц важно правильно сформировать поток, а вот вывод полей можно и подкорректировать.
По сути вам нужно организовать правильную сортировку(проще изначально делать иерархические коды подразделений и хорошо когда все отделы оказываются на одном уровне - жизнь становиться проще), а видимость дерева регулировать пробелами в зависимости от уровня вложенности или от длины кода.
Возможно вам пригодиться возможность зарегить Static функции, а потом использовать в FastReport через CompileVipExpression(в описании к патчам можно найти примеры использования). Вообще говоря, все функции которые работают по Ctrl+F4, можно использовать в фастрепорте.
Re: Отчеты в FastReport
Добавлено: 08 ноя 2016, 15:23
RAJAH
Не совсем понятна мысль. У меня есть отсортированный полный список подразделений, есть набор данных в cross-tab с привязкой к подразделению. Как объединить эти множества, чтобы выходили и все верхние подразделения-родители, и итоги по ним?
Re: Отчеты в FastReport
Добавлено: 08 ноя 2016, 18:43
edward_K
Добавить в набор данных также пустышки для всех вышестоящих подразделений. Объекта дерево в фасте я не помню.
Re: Отчеты в FastReport
Добавлено: 09 ноя 2016, 13:36
RAJAH
По-моему, в этом случае каждое подразделение будет иметь свой независимый итог, а не включающий потомков тоже, но всё-таки попробую.