Лично меня на Windows сейчас удерживает только ваша FastrReport Studio, потому как приличной альтернативы генератора отчетов в Linux пока нет.
И на мой взгляд портирование FastrReport.NET под Linux заметно прибавило бы Вам сторонников.
PS
А под Wine c FastrReport.NET как нибудь пристроиться можно?
private void _StartReport(object sender, EventArgs e)
{
DataSet ds;
... // инициализация и заполнение датасета
string tablename = ds.Tables[0].TableName;
Report.RegisterData(ds, tablename);
DataSourceBase data = Report.GetDataSource(tablename);
data.Init();
// источник данных получен и заполнен
MessageBox.Show(string.Format("Количество записей: {0}", data == null ? "null" : data.Rows.Count.ToString()));
// записи есть
// настройка DataBand
Text2.Text = "[LIB.ID]";
Text6.Text = "[LIB.NAME]";
Text2.Style = "Data";
Text6.Style = "Data";
Text2.AllowExpressions = true;
Text6.AllowExpressions = true;
Data1.DataSource = data;
}
При вызове у отчета Show() происходит NullReferenceException при отображении страницы (Page1_StartPage вызывается, Page1_FinishPage нет), как я понял из-за Expressions (если их установить в false, то отчет запускается, но вместо значений понятно выводится [LIB.ID] и т.д.), вот Stacktrace:
System.NullReferenceException
в Jkx988NdoxWVIeuRN9.At0kTA9mGyd4yUOyiH.xZ5qbk7ou(String , Variant )
в FastReport.Report.Calc(String expression, Variant value)
в FastReport.Report.Calc(String expression)
в FastReport.TextObject.GetData()
в FastReport.BandBase.GetData()
в FastReport.Engine.ReportEngine.d40BD3knN(BandBase , Boolean )
в FastReport.Engine.ReportEngine.w2RtIR95Y(BandBase , Boolean )
в FastReport.Engine.ReportEngine.LKocUVRPb(BandBase , Boolean )
в FastReport.Engine.ReportEngine.ShowBand(BandBase band)
в FastReport.Engine.ReportEngine.36wsBZuvY(DataBand , Int32 )
в FastReport.Engine.ReportEngine.2e07cSDx9(DataBand , Int32 , Boolean , Boolean , Boolean )
в FastReport.Engine.ReportEngine.HtFxbZ4a7(DataBand )
в FastReport.Engine.ReportEngine.B5wCdeZy6D(BandCollection )
в FastReport.Engine.ReportEngine.0KZCAhFm6j(ReportPage )
в FastReport.Engine.ReportEngine.YDNCNSOJYw()
в FastReport.Engine.ReportEngine.n8N0KslUb(Boolean , Boolean , ReportPage )
в FastReport.Engine.ReportEngine.BjEUJA1T0(Boolean , Boolean )
в FastReport.Report.Prepare(Boolean append)
в FastReport.Report.Prepare()
в FastReport.Report.Show()
Как показать превью отчета в MDI окне, но каждое новое построение отчета надо показывать в новом MDI окне?
Да и еще - как заголовок окна присвоить для каждого такого MDI првью?
Report.RegisterData(ds) - регистрация всего датасета. Если нужна только одна таблица, надо делать так:
Report.RegisterData(ds.Tables[0], tablename);
Создаю новый отчет, кидаю на Data1 Text1 и Text2 (источник данных вручную не добавляю), в обработчике _StartReport пишу код, при запуске выводится сообщение "Количество записей: 8", затем NullReferenceException, StackTrace:
в wjejkqAoQKeOnkA63h.E4NMk9c3f0MQ0yyQvH.5hDOKY1yt(String , Variant )
в FastReport.Report.CalcExpression(String expression, Variant value)
в FastReport.Report.Calc(String expression, Variant value)
в FastReport.Report.Calc(String expression)
в FastReport.TextObject.GetData()
в FastReport.BandBase.GetData()
в FastReport.Engine.ReportEngine.yjG24bPJQ(BandBase , Boolean )
в FastReport.Engine.ReportEngine.CkSeMcTVl(BandBase , Boolean )
в FastReport.Engine.ReportEngine.DI0PG8MgT(BandBase , Boolean )
в FastReport.Engine.ReportEngine.ShowBand(BandBase band)
в FastReport.Engine.ReportEngine.O35SH6Uhg(DataBand , Int32 )
в FastReport.Engine.ReportEngine.Upr8C3FFZ(DataBand , Int32 , Boolean , Boolean , Boolean )
в FastReport.Engine.ReportEngine.BbKFrq7ew(DataBand )
в FastReport.Engine.ReportEngine.UdIsQk0Byu(BandCollection )
в FastReport.Engine.ReportEngine.XXysa2U601(ReportPage )
в FastReport.Engine.ReportEngine.96as7CQBf0()
в FastReport.Engine.ReportEngine.d55vj5ytf(Boolean , Boolean , ReportPage )
в FastReport.Engine.ReportEngine.2RUYGnQLo(Boolean , Boolean )
в FastReport.Report.Prepare(Boolean append)
в FastReport.Report.Prepare()
в FastReport.Report.Show()
Создаю новый отчет, кидаю на Data1 Text1 и Text2 (источник данных вручную не добавляю), в обработчике _StartReport пишу код, при запуске выводится сообщение "Количество записей: 8", затем NullReferenceException, StackTrace:
Вроде поправил. Новая версия соберется в полночь.
Хоть такая возможность и предусмотрена, динамически строить отчет нежелательно. При запуске он будет скомпилирован дважды (первый раз - компиляция исходного кода отчета, второй - компиляция выражений, которые были добавлены в коде). Это лишние задержки, да и в medium trust работать не будет (если захотите работать с ASP).
Да и еще: свойство Text у MDI формы проставляется всюду одинаковое "PreviewControl", а не тот заголовок что устанавливается через
report.ReportInfo.Name = "...";
Где можно просмотреть информацию о правилах именования источников данных? Сейчас, если в наименовании источника данных встречается точка, например "Таблица.1", то обращение к полям в отчете вызывает ошибку ("[Таблица.1.NAME]"), как я понимаю, выражение разбирается по первой точке и данная ситуация исправляется только использованием алиасов (которые не должны включать в себя точку)?
В документации этого нет, нужно будет добавить.
В имени источника данных точка не допускается. Она может быть только в имени поля, при этом поле будет считаться составным и отображаться в виде дерева.
Здравствуйте.
Мы пользуемся BCB2007 + FastReport.VCL но в рамках нового проекта собираемся использовать FastReport.NET.
Нужно сделать сервер отчетов.
Все как обычно - шаблоны в БД, SQL-запросы там же.
Интерфейс к серверу - WEB Services. Клиентская часть - веб-браузер (не .ASP). Соответственно, отображать и печатать нужно не стредствами FastReport а будем использовать экспорт.
У меня вопросы по экспорту:
1. Очень нужна возможность экспорта в текстовый формат, пригодный для печати на матричные принтера (типа DotMatrixExport) или как в VCL.
Ну очень много у нас таких принтеров
Вы планируете экспорт в текст. Можно ли будет его ипользовать для печати на матричных принтерах?
2. Нужен экспорт в HTML в виде одной сплошной страницы без фреймов и навигатора.
Я попробовал сделать такой экспорт в демке версии 1.0.35 (SinglePage=true, все остальное=false), но страница формируется с навигатором и фреймами.
Это баг?
1) мы планируем добавить все экспорты, которые были доступны в VCL. Но времени на это уйдет достаточно много - я не могу сказать, когда будет готов TXT.
2) баг, будем исправлять.
Да, мы им сейчас занимаемся. Точных сроков сказать не могу - работы много.
Здравствуйте!
У меня вопрос по поводу отслеживания момента, когда начинает формироваться новая страница, т.к. необходимо в начале страницы вывести шапку таблицы отчета, которую я собираю используя методы PrintRow(...) и PrintColumn(...).
Можно подписаться на события бэнда PageHeader (BeforePrint/AfterPrint). Шапку можно сделать проще - укажите в св-ве таблицы FixedRows количество строк с начала таблицы, которые будут повторяться автоматически на каждой новой странице.
Ок, спасибо.
Еще такой вопрос: у MatrixObject колонки сортируются в алфавитном порядке. Если названиями колонок, например, являются названия месяцев, то они идут в неестественном порядке. Можно как-то решить эту проблему ?
rpt.Preview не установлен
rpt.Prepare();
rpt.ShowPrepared(false);
и если в отчете есть диалоговая форма, то при нажатии кнопки "Отмена" в этой форме, окно FastReport`a все равно показывается. Можно сделать чтобы оно не показывалось ? Так, как происходит при использовании метода Show().
Комментарии
И на мой взгляд портирование FastrReport.NET под Linux заметно прибавило бы Вам сторонников.
PS
А под Wine c FastrReport.NET как нибудь пристроиться можно?
Конфликтов не будет?
А можно ли отключить показ окон прогресса при формировании и печати?
Чего-то не нашёл я такого или конец дня просто
или в компоненте EnvironmentSettings (что в toolbox)
При вызове у отчета Show() происходит NullReferenceException при отображении страницы (Page1_StartPage вызывается, Page1_FinishPage нет), как я понял из-за Expressions (если их установить в false, то отчет запускается, но вместо значений понятно выводится [LIB.ID] и т.д.), вот Stacktrace:
Report.RegisterData(ds) - регистрация всего датасета. Если нужна только одна таблица, надо делать так:
Report.RegisterData(ds.Tables[0], tablename);
Как показать превью отчета в MDI окне, но каждое новое построение отчета надо показывать в новом MDI окне?
Да и еще - как заголовок окна присвоить для каждого такого MDI првью?
P.S.
До релиза еще далеко?
С релизом решили не торопиться. У меня пока есть претензии к асп-части.
Создаю новый отчет, кидаю на Data1 Text1 и Text2 (источник данных вручную не добавляю), в обработчике _StartReport пишу код, при запуске выводится сообщение "Количество записей: 8", затем NullReferenceException, StackTrace:
Прикладываю пример.
А как насчёт заголовка для каждого окна? Как его присвоить?
Мне надо что б каждое превью называлось по разному.
report.ReportInfo.Name = "...";
report.ShowPrepared(...)
либо так:
Config.PreviewSettings.Text = "...";
report.ShowPrepared(...)
Вроде поправил. Новая версия соберется в полночь.
Хоть такая возможность и предусмотрена, динамически строить отчет нежелательно. При запуске он будет скомпилирован дважды (первый раз - компиляция исходного кода отчета, второй - компиляция выражений, которые были добавлены в коде). Это лишние задержки, да и в medium trust работать не будет (если захотите работать с ASP).
report.ReportInfo.Name = "...";
Если вместо report.ReportInfo.Name = "..." сделать Config.PreviewSettings.Text = "...", то будет показано многоточие.
Где можно просмотреть информацию о правилах именования источников данных? Сейчас, если в наименовании источника данных встречается точка, например "Таблица.1", то обращение к полям в отчете вызывает ошибку ("[Таблица.1.NAME]"), как я понимаю, выражение разбирается по первой точке и данная ситуация исправляется только использованием алиасов (которые не должны включать в себя точку)?
В документации этого нет, нужно будет добавить.
В имени источника данных точка не допускается. Она может быть только в имени поля, при этом поле будет считаться составным и отображаться в виде дерева.
Мы пользуемся BCB2007 + FastReport.VCL но в рамках нового проекта собираемся использовать FastReport.NET.
Нужно сделать сервер отчетов.
Все как обычно - шаблоны в БД, SQL-запросы там же.
Интерфейс к серверу - WEB Services. Клиентская часть - веб-браузер (не .ASP). Соответственно, отображать и печатать нужно не стредствами FastReport а будем использовать экспорт.
У меня вопросы по экспорту:
1. Очень нужна возможность экспорта в текстовый формат, пригодный для печати на матричные принтера (типа DotMatrixExport) или как в VCL.
Ну очень много у нас таких принтеров
Вы планируете экспорт в текст. Можно ли будет его ипользовать для печати на матричных принтерах?
2. Нужен экспорт в HTML в виде одной сплошной страницы без фреймов и навигатора.
Я попробовал сделать такой экспорт в демке версии 1.0.35 (SinglePage=true, все остальное=false), но страница формируется с навигатором и фреймами.
Это баг?
1) мы планируем добавить все экспорты, которые были доступны в VCL. Но времени на это уйдет достаточно много - я не могу сказать, когда будет готов TXT.
2) баг, будем исправлять.
Будет ли он в ближайшее время?
Здравствуйте!
У меня вопрос по поводу отслеживания момента, когда начинает формироваться новая страница, т.к. необходимо в начале страницы вывести шапку таблицы отчета, которую я собираю используя методы PrintRow(...) и PrintColumn(...).
Как это можно сделать?
Можно подписаться на события бэнда PageHeader (BeforePrint/AfterPrint). Шапку можно сделать проще - укажите в св-ве таблицы FixedRows количество строк с начала таблицы, которые будут повторяться автоматически на каждой новой странице.
Как в дизайнере записать в окно сообщений свое отладочное сообщение? Отлаживать отчет с помощью MessageBox не очень удобно.
В очередном билде добавил:
Report.Designer.ShowMessage(string)
Report.Designer.ClearMessages()
Учтите, что при запуске не из дизайнера св-во Report.Designer == null.
Очередной билд соберется сегодня в полночь.
Еще такой вопрос: у MatrixObject колонки сортируются в алфавитном порядке. Если названиями колонок, например, являются названия месяцев, то они идут в неестественном порядке. Можно как-то решить эту проблему ?
rpt.Preview не установлен
rpt.Prepare();
rpt.ShowPrepared(false);
и если в отчете есть диалоговая форма, то при нажатии кнопки "Отмена" в этой форме, окно FastReport`a все равно показывается. Можно сделать чтобы оно не показывалось ? Так, как происходит при использовании метода Show().