Обнаруженные баги в Fastreport .net

отредактировано June 2008 Раздел: FastReport .NET
Первые два замечания показываю на скрине:
soTsM5MhbR.jpg
следующее замечание:
Документация, файл которой предоставлен здесь не работает в Windows Vista.
«13456715

Комментарии

  • отредактировано 18:49
    Первая ошибка - не ошибка вовсе: объект "Текст" показывает текст, содержащий формулы. Формула - это то, что в квадратных скобках. В Вашем примере две формулы. Чтобы работало так, как надо: Employees.EmployeeID] * [Employees.EmployeeID
    Вторую ошибку поправил, а с Вистой проверю.
  • отредактировано 18:49
    AlexTZ написал: »
    подскажите пожалуйста, а почему в топике не отобразился скрин? ведь я использовал кнопку "вставить изображение" в редакторе сообщений...
  • отредактировано June 2008
    спасибо.

    А логические конструкции возможно реализовывать в данном окне? вставлять фрагменты кода, написанные на C#...
  • отредактировано June 2008
    еще вспомнил не приятный момент. я экспортировал результат в файл формата pdf, открыл его, но листать страницы не возможно - жуткие тормоза, хотя комп очень даже не слабый. я так понимаю, что это из-за водяных знаков (надпись о демоверсии), т.к. они постепенно при скролинге начинают проявляться. в общем просматривать отчет в этом формате не возможно (нервов не хватит). другие форматы экспорта не смотрел пока.
  • отредактировано 18:49
    mangoost написал: »
    А логические конструкции возможно реализовывать в данном окне? вставлять фрагменты кода, написанные на C#...

    В квадратных скобках можно писать любые выражения, будь то вызовы ф-й, обращение к св-вам объектов и пр. Нельзя писать куски кода, не являющиеся выражениями.
  • отредактировано 18:49
    mangoost написал: »
    еще вспомнил не приятный момент. я экспортировал результат в файл формата pdf, открыл его, но листать страницы не возможно - жуткие тормоза, хотя комп очень даже не слабый. я так понимаю, что это из-за водяных знаков (надпись о демоверсии), т.к. они постепенно при скролинге начинают проявляться. в общем просматривать отчет в этом формате не возможно (нервов не хватит). другие форматы экспорта не смотрел пока.

    Вы нас с кем-то путаете - у FR.Net пока нет экспорта в pdf.
  • отредактировано June 2008
    Нет, не путаю.
    Экспортировать можно по разному. Применительно к формату pdf, что печать в формате pdf, что экспорт - одна малина. Это я сделал из предварительного просмотра отчета - нажал печать и выбрал нужный формат:

    puN2M3oUbL.jpg

    получил pdf-файл. Скорость просмотра данного файла очень низкая, о чем и сообщаю. Хотя возможно, что это проблема виртуального принтера.
  • отредактировано 18:49
    Скорее всего, но мы тут уже ничем помочь не можем.
  • отредактировано 18:49
    Документацию вроде исправили, скачайте посмотрите.
  • отредактировано June 2008
    AlexTZ написал: »
    Документацию вроде исправили, скачайте посмотрите.
    спасибо. дома посмотрю - на работе ХР. А мануал на русском есть, чтобы поподробней почитать? Я в первый раз ваш генератор отчетов смотрю. Версий продукта много, подойдет ли мануал от одной, для изучения другой (это ведь все таки .NET- сборка). Просто увидел у вас объект таблицы, захотел про нее почитать.
  • отредактировано 18:49
    То, что лежит сейчас на сайте - это справка по компонентам, свойствам, методам. Есть (и будет) только в английском варианте, т.к. строится она автоматически по комментариям в исходниках. До выпуска релиза сделаем еще одну документацию - user manual. Она будет уже на русском. Документация от других продуктов (FastReport VCL или FastReport Studio) не подойдет, слишком они разные.
    Пока про таблицы можно почитать: 1) описания к файлам отчетов с таблицей, 2) в имеющейся документации - классы TableBase, TableObject.
  • отредактировано June 2008
    AlexTZ написал: »
    Документацию вроде исправили, скачайте посмотрите.
    нет. та же фигня, что и раньше. Выглядит это так:

    TL56nVUhVH.jpg

    причем на любой странице. На Windows XP такого нет, а вот на Vista - такая петрушка. Если я не ошибаюсь - Vista поддерживает иной формат справки. Возможно в этом дело? В любом случае - хотелось бы иметь доступ к справке и из ОС Vista :)
  • отредактировано 18:49
    Вы, когда открываете файл справки, окошко Security Warning видите? Если в нем снять флажок Always ask before opening this file, то файл открывается нормально. Если не снимать - та же фигня. Причем не только на данном файле, пробовал и на других .chm, скачанных из сети.
  • отредактировано June 2008
    Вот здесь: http://oas.livejournal.com/ описано, почему так происходит. Искать по слову "CHM".
  • отредактировано 18:49
    AlexTZ написал: »
    Вот здесь: http://oas.livejournal.com/ описано, почему так происходит. Искать по слову "CHM".
    спасибо. приду домой и обязательно попробую =)
  • отредактировано 18:49
    «Баг или фича?»

    Проблема такая:
    Создаются две таблицы: Source и Target
    Source имеет следующий вид:
    SID | SName
    1 | SourceName1
    2 | SourceName2
    3 | SourceName2

    Target:
    TID | TName
    1 | TargetName1
    2 | TargetName2
    3 | TargetName3
    И две таблицы DirRelation и RevRelation, описывающие связи между ними:
    DirRelation:
    dSID | dTID
    1 | 1
    1 | 2
    2 | 3

    RevRelation:
    dSID | dTID
    2 | 2
    2 | 3
    2 | 1

    Таблицы добавляются в DataSet FDataSet
    И между ними создаются связи:
    //1
    FDataSet.Relations.Add("Source_dirDelation",  FDataSet.Tables["Source"].Columns["SID"],
    FDataSet.Tables["DirRelation"].Columns["dSID"]);
    //2                
    FDataSet.Relations.Add("dirRelation_Target", FDataSet.Tables["DirRelation"].Columns["dTID"],
    FDataSet.Tables["Target"].Columns["TID"]);
    //3               
    FDataSet.Relations.Add("Target_RevRelation", FDataSet.Tables["Target"].Columns["TID"],
    FDataSet.Tables["RevRelation"].Columns["rSID"]);
    //4                
    FDataSet.Relations.Add("RevRelation_Source", FDataSet.Tables["RevRelation"].Columns["rTID"],
    FDataSet.Tables["Source"].Columns["SID"]);
    

    DataSet передается в FastReport:
    private Report FReport=new Report();
    FReport.RegisterData(FDataSet,"MyData");
    
    И вызывается дезайнер отчетов:
    FReport.Design();

    При нажатии на пункт меню Data -> Choose Report Data… приложение вылетает с ошибкой:
    An unhandled exception of type 'System.StackOverflowException' occurred in System.Windows.Forms.dll
    T.e. в диалоге Choose Report Data дезайнер попадает в вечный цикл (пока стек не переполнится) при обработке DataRelations в переданном DataSet`e (Этот цикл порождает последняя добавленная в DataSet связь: RevRelation_Source).
    (Использовал VS2005, C#, c FastReport.dll v0.1.33.0
  • отредактировано 18:49
    Здравствуйте,

    Вроде поправил. Свежая версия будет доступна завтра.
  • отредактировано 18:49
    Здравствуйте.
    Обнаружил еще баг (довольно заковыристый, поэтому приведу код, на котором его можно наблюдать):
    //Form1.cs
    using System;
    ........  //Прочие стандартные пространства имен
    using FastReport;
    
    namespace FRNETNew
    { 
            public partial class Form1 : Form
            {
                private Report FReport = new Report();
                private DataSet FDataSet;
                private DataTable dt, dt2, dt4;
                public Form1()
                {
                    InitializeComponent();
                }
    
                private void button1_Click(object sender, EventArgs e)
                {
                    FReport.Load("main.frx");
                    FReport.RegisterData(FDataSet, "MyData");
                    FReport.Design();
                }
    
                private void Form1_Load(object sender, EventArgs e)
                {
                    FDataSet = new DataSet();
                    //Создание и заполнение данными таблиц в FDataSet
                    dt = new DataTable("Source");
                    dt2 = new DataTable("DirRelation");
                    dt4 = new DataTable("Target");
                   
                    dt.Columns.Add("SID", typeof(int));
                    dt.Columns.Add("SName");
                    dt2.Columns.Add("dSID", typeof(int));
                    dt2.Columns.Add("dTID", typeof(int));
                    dt4.Columns.Add("TID", typeof(int));
                    dt4.Columns.Add("TName");
    
                    for (int i = 1; i <= 3; i++)
                    {
                        DataRow dr = dt.NewRow();
                        dr[0] = i;
                        dr[1] = "SourceName" + i.ToString();
                        dt.Rows.Add(dr);
                    }
                    /*SourceTable:
                     * 1 | SourceName1
                     * 2 | SourceName2
                     * 3 | SourceName3
                     */
    
                    DataRow dr1 = dt2.NewRow();
                    dr1[0] = 1;
                    dr1[1] = 1;
                    dt2.Rows.Add(dr1);
                    DataRow dr2 = dt2.NewRow();
                    dr2[0] = 1;
                    dr2[1] = 2;
                    dt2.Rows.Add(dr2);
                    DataRow dr3 = dt2.NewRow();
                    dr3[0] = 2;
                    dr3[1] = 3;
                    dt2.Rows.Add(dr3);
                    /*DirTable:
                     * 1 | 1
                     * 1 | 2
                     * 2 | 3
                     */
    
                    for (int i = 1; i <= 3; i++)
                    {
                        DataRow dr = dt4.NewRow();
                        dr[0] = i;
                        dr[1] = "TargetName" + i.ToString();
                        dt4.Rows.Add(dr);
                    }
                    /*TargetTable:
                     * 1 | TargetName1
                     * 2 | TargetName2
                     * 3 | TargetName3
                     */
    
                    //Добавление таблиц в DataSet
                    FDataSet.Tables.Add(dt);
                    FDataSet.Tables.Add(dt2);
                    FDataSet.Tables.Add(dt4);
                    //Создание связей между таблицами
                    FDataSet.Relations.Add("Source_dirRelation", FDataSet.Tables["Source"].Columns["SID"],
                        FDataSet.Tables["DirRelation"].Columns["dSID"]);
                    FDataSet.Relations.Add("Target_dirRelation", FDataSet.Tables["Target"].Columns["TID"],
                        FDataSet.Tables["DirRelation"].Columns["dTID"]);
          
                    //Вывод данных из таблиц (Тоже должны получить в отчете)
                    string str1 = "";
                    foreach (DataRow drSource in FDataSet.Tables["Source"].Rows)
                    {
                        str1 += drSource["SID"].ToString() + "  " + drSource["SName"].ToString() + "\n";
                        foreach (DataRow drDirRelation in drSource.GetChildRows("Source_dirRelation"))
                        {
                            str1 += "    dSID: " + drDirRelation["dSID"].ToString() + "  dTID" + drDirRelation["dTID"].ToString() + "\n";
                        }
                    }
                    MessageBox.Show(str1); //Результат 1
    
                    string str2 = "";
                    foreach (DataRow drSource in FDataSet.Tables["Target"].Rows)
                    {
                        str2 += drSource["TID"].ToString() + "  " + drSource["TName"].ToString() + "\n";
                        foreach (DataRow drDirRelation in drSource.GetChildRows("Target_dirRelation"))
                        {
                            str2 += "    dTID: " + drDirRelation["dTID"].ToString() + "  dSID:" + drDirRelation["dSID"].ToString() + "\n";
                        }
                    }
                    MessageBox.Show(str2); //Результат 2
                }
            
        }
    }
    

    После запуска приложения на выполнение появляются MessageBox`ы
    m3MkcWwHKf.jpg
    (это то, что надо получить в отчете). Нажимаем button1.

    Шаблон отчета (main.frx) имеет вид:
    hKmzx5F6O8.jpg

    Результат выполнения отчета:
    7Fd3d1Ytvv.jpg

    Удаляем первый detail бэнд, выполняем отчет:
    uRvoBW6BV5.jpg

    Вообщем, что-то не так при автоматической обработке имеющихся связей.

    P.S. Прошу прощения за огромный пост.

  • отредактировано 18:49
    Тоже самое можно наблюдаеть и в отчете Complex (Master-detail + Group), если собрать следующий шаблон:
    USt1Rp2y4d.jpg
  • отредактировано 18:49
    Здравствуйте,

    Поправил. Исправленную версию можно скачать в понедельник.
  • отредактировано July 2008
    Здравствуйте,
    Проверил - отлично работает!
    Такая конструкция в шаблоне отчета и позволяет реализовать то, о чем я писал в разделе "Предложения и пожелания по Fastreport .net". Только нужно соответствующим образом сформировать DataSet.

    Обнаружил еще один небольшой баг в интерфейсе дезайнера, связан с кнопкой Fill Color:
    При выборе цвета заливки (скажем Silver), полоска на кнопке Fill Color красится в этот цвет. Если после этого выбрать цвет заливки Transparent, то цвет полоски на кнопке не меняется, а остается темже (Silver).

    ___________________
    С уважением,
    А. Шкрыль
    FORS-Development center Limited
    ashkryl<++Аццкое собако-->fors.ru
  • отредактировано 18:49
    Domoch написал: »
    Обнаружил еще один небольшой баг в интерфейсе дезайнера, связан с кнопкой Fill Color:

    Поправил.
  • отредактировано 18:49
    [вопрос относительно сглаживания линий и шрифтов
    - не нашел этих свойств... может быть не там искал?
    для демонстрации - рисовал в пустом отчете - диагональные стрелки, они отрисовываются без сглаживания ... лесенкой
  • отредактировано 18:49
    См. в меню Report|Options, комбобокс "Text quality" - это текст, флажок "Smooth graphics" - это линии и изображения.
  • отредактировано 18:49
    Еще баг:

    Если создать новый отчет
    Report report=new Report();
    
    и сразу построить его
    report.Show();
    //или
    //report.Prepare();
    //report.ShowPrepared()
    
    и в появившемся (после запуска приложения) окне Preview нажать на Page Setup, приложение вылетает с ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
    Parameter name: index
  • отредактировано 18:49
    Спасибо, поправил.
  • отредактировано 18:49
    Баг (фича) в автоматической привязке бенда:
    Когда на бенд перетаскивается какое-нибудь поле таблицы он автоматически к ней привязывается, например в отчете Complex (Master-detail + Group) перетаскиваем поле OrderID таблицы Order Details - получаем бенд с Data: Order Details.
    Но если на чистый (не привязанный к какой-либо таблице) бенд перетащить поле из объекта Relation, например из таблицы Order Details объекта Relation с именем Products перетащить поле ProductID, то бэнд привяжется к таблице Products (Data: Products), а не Order Details. Если после этого запустить построение отчета появляется исключение:
    Exception has been thrown by the target of an invocation.
    Inner exception:
    Index was out of range. Must be non-negative and less then size of the collection.
  • Dracula_DISDracula_DIS Москва
    отредактировано 18:49
    Вставляю две таблицы в отчет. пустые. работаю только дизанером.
    При попытке построить отчет выдает message: Table2: error CS0111: Type 'FastReport.ReportScript' already defines a member called 'Sum' with the same parameter types
    и еще несколько аналогичных...
    Что это?
  • отредактировано 18:49
    Domoch написал: »

    Domoch написал: »

    Поправил оба. При первой возможности вылью изменения, сейчас нет интернета.
  • отредактировано 18:49
    Можно качать.
Дискуссия закрыта.