БАГИ в FastReport 3

12357

Комментарии

  • отредактировано 10:57
    AlexTZ написал:
    AlexTZ написал:
    Создал я проект, все нормально работает, добавляю на форму frxDataSet и frxReport, компилирую и при запуске приложение возникает ошибка

    Exception EReadError in module xxxxxxxx.exe at XXXXXXXXXX.
    Error reading frxDBDataSet.GroupIndex: Property GroupIndex does not exist.


    в чем дело ?
    Надо открыть все модули проекта, где используются компоненты FR3, ответить Ignore all и сохранить. Это св-во было по ошибке добавлено всем компонентам в 3.01.
    Так что этой проперти GroupIndex уже нет?
    а как же группировка элементов?
  • отредактировано 10:57
    AlexTZ написал:
    AlexTZ написал:
    AlexTZ написал:
    Потому что в FR3 квадратные скобки "заняты" скриптом для передачи параметров типа "массив".
    Ну почему при сохранение в 2.53 версии она сохранет квадратные скобки??
    это то можно было сделать... чтобы после загрузки в 3
    не править эти скобки
    Конвертер 2->3 не настолько интеллектуален, чтобы менять одни скобки на другие. Для этого пришлось бы делать полный разбор синтаксиса выражений и синтез их обратно. И все равно, что-нибудь пришлось бы править вручную.
    Ну можно сделать кнопку проверить синтаксис?
    а то открывается долгий запрос. потом вываливается ошибка в Мемо23.
    исправляешь ее снова запускаешь.. и так по циклу пока все не исправишь..
    На это уходит очень много времени.
    у нас в проекте очень много отчетов.
    и когда все переведем не известо.
    так вот 2 и3 версия живут вместе.
  • отредактировано 10:57
    Konst написал:
    Так что этой проперти GroupIndex уже нет?
    а как же группировка элементов?
    Есть, но не у всех.
  • отредактировано 10:57
    Konst написал:
    Ну можно сделать кнопку проверить синтаксис?
    а то открывается долгий запрос. потом вываливается ошибка в Мемо23.
    исправляешь ее снова запускаешь.. и так по циклу пока все не исправишь..
    На это уходит очень много времени.
    у нас в проекте очень много отчетов.
    и когда все переведем не известо.
    так вот 2 и3 версия живут вместе.
    Нельзя, т.к. проверка синтаксиса в самих мемо требует выполнения отчета.
  • отредактировано 10:57
    AlexTZ написал:
    AlexTZ написал:
    Ну можно сделать кнопку проверить синтаксис?
    а то открывается долгий запрос. потом вываливается ошибка в Мемо23.
    исправляешь ее снова запускаешь.. и так по циклу пока все не исправишь..
    На это уходит очень много времени.
    у нас в проекте очень много отчетов.
    и когда все переведем не известо.
    так вот 2 и3 версия живут вместе.
    Нельзя, т.к. проверка синтаксиса в самих мемо требует выполнения отчета.
    ну тогда чтобы не вываливалось при ошибке а выдавала полный список в каких мемо ей что не нравится
    и чтобы этот список можно было скопировать в буфер
  • отредактировано 10:57
    1. Извините за резкий тон, но... Какого xxx при чтении значения параметра запроса из frxDBDataset последний переходит к первой записи??? ;)

    Реальный пример. Имеется приложение с IBQuery (IBX) в котором есть список шапок документов. На этот квайри навешен frxDBDataset c RangeBegin=rbCurrent, RangeEnd=reCurrent и OpenDataSource=False. Т.е. мне нужно из отчета получить выбранный в данный момент документ. В отчете есть свой IBXQuery с параметром DOC_ID. В списке параметров IBXQuery выставляю "брать значение параметра DOC_ID из поля ID таблицы frxDBDataset". В результате могу получить отчет только по ПЕРВОМУ документу, потому как в момент установки параметра IBXQuery frxDBDataset какогото ххх делает First(). Благо если делать установку параметра через скрипт Close/ParamByName=.../Open, то работает.

    2. По поводу параметров. Если в диалоге параметров запроса было установлено "брать значение из...", то стереть эту директиву невозможно (если очистить закрыть диалог и открыть его заново, то все будет по старому)

    3. Почему при неправильно введенном тексте запроса и открытии диалога алиасов полей FR молчит как рыба и показывает пустой список полей вместо того, чтобы сказать, что я идиот и запрос у меня не правильный? Сейчас приходится делать запросу Active=true/Active=false, а это, на увесистых запросах, может занимать несколько минут, хотя для проверки правильности можно всего-навсего сделать Prepare/Unprepare...
  • отредактировано 10:57
    Как только полностью ознакомился с демо FastReport3.03 и сравнил его с demo FastReport2.47, проинсталлировал весь продукт FastReport3.03 на Delphi 6. Успешно. Затем создал пустой новый проект, накидал на форму 2 компонента: frxReport1: TfrxReport, frxDesigner1: TfrxDesigner.
    type
      TForm1 = class(TForm)
        frxReport1: TfrxReport;
        frxDesigner1: TfrxDesigner;
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    

    затем залез в Project-->ViewSource и написал:
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.ShowMainForm := False;
      Form1.frxReport1.DesignReport;  
      Application.Run;
    end.
    

    Запускаю файл Project1.exe и кликаю мышью по вкладкам "Variables", "Functions" и выскакивает Exception "Integer Overflow" и не даёт мне вырубиться. приходится через диспетчер задач вырубать.. Что это такое-сырой продукт? :-)
  • отредактировано October 2004
    Уже начинают бесить меня ошибки типа "Invalid variant type conversion"
    в функции MyFunc
    function MyFunc(s: String; i: Integer): Boolean;
    begin
     Result := True;
    end;
    
    constructor TFunctions.Create;
    begin
      with fsGlobalUnit do
       begin
       AddedBy := Self;
       AddMethod('function fAdiMyFunc(s: String; i: Integer): Boolean',
    //   AddMethod('function fAdiMyFunc(s: String; i: Integer): String',
    //   AddMethod('function fAdiMyFunc(s: String; i: String): Boolean',
            CallMethod, 'ADI functions', 'Функция MyFunc всегда возвращает True');
       AddMethod('procedure pAdiMyProc(s: String)', CallMethod, 'ADI functions',
                                         'Процедура MyProc не делает ничего');
       AddMethod('function fAdiGetConcatString(s1: String; s2: String): String',
            CallMethod, 'ADI functions', 'Конкатенация двух строк');
       AddedBy := nil;
      end;
    end;
    
    function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
                           const MethodName: String; var Params: Variant): Variant;
    begin
      if MethodName = UpperCase('fAdiMyFunc') then
       Result := MyFunc(Params[0], Integer(Params[1]))
     else
      if MethodName = UpperCase('fAdiGetConcatString') then
       Result := GetConcatString(Params[0], Params[1])
     else
     if MethodName = UpperCase('pAdiMyProc') then
       MyProc(Params[0]);
    end;
    
    Как мне избавиться от этой ошибки? Со строками работает хорошо, а с числами нет. Само в Дельфи отлично работает, а в FastReport + FS с ошибками
  • отредактировано 10:57
    Попробовал на Delphi5, 6 - работает нормально, если вызывать
    [fAdiMyFunc('a', 1)]
    если, конечно, пытаться вызывать так:
    [fAdiMyFunc(Null, 1)]
    то работать не будет.
  • отредактировано 10:57
    Фигня до сих пор у меня идёт. Могу выслать Вам на почту и сами увидите результат...
    Я уже отправил по почте тестовый пример в zip-архиве. А вот в версии 2.47 такой пример сделал - и гладко работает он.
  • alexghaashalexghaash Йошкар-Ола
    отредактировано 10:57
    При установке свойств TFrxDesigner.Restrictions в True
    при дизайне пользователем шаблона отчета соответвующие кнопки и пункты
    (Првью, Удаление/Добавление страницы и т.д) не Disable. хотя и не вызывают
    соответвующих действий. Это вводит пользователя в заблуждение и вызывает
    ненужные вопросы. Если отключены действия, надо и кнопки отключать или
    скрывать.
  • отредактировано 10:57
    Hill написал:
    Фигня до сих пор у меня идёт. Могу выслать Вам на почту и сами увидите результат...
    Я уже отправил по почте тестовый пример в zip-архиве. А вот в версии 2.47 такой пример сделал - и гладко работает он.
    Надо поставить патчи на Delphi6 - об этом уже писали в какой-то теме (ошибки похожие).
  • отредактировано 10:57
    AnDy написал:
    1. Извините за резкий тон, но... Какого xxx при чтении значения параметра запроса из frxDBDataset последний переходит к первой записи??? ;)

    Реальный пример. Имеется приложение с IBQuery (IBX) в котором есть список шапок документов. На этот квайри навешен frxDBDataset c RangeBegin=rbCurrent, RangeEnd=reCurrent и OpenDataSource=False. Т.е. мне нужно из отчета получить выбранный в данный момент документ. В отчете есть свой IBXQuery с параметром DOC_ID. В списке параметров IBXQuery выставляю "брать значение параметра DOC_ID из поля ID таблицы frxDBDataset". В результате могу получить отчет только по ПЕРВОМУ документу, потому как в момент установки параметра IBXQuery frxDBDataset какогото ххх делает First(). Благо если делать установку параметра через скрипт Close/ParamByName=.../Open, то работает.

    2. По поводу параметров. Если в диалоге параметров запроса было установлено "брать значение из...", то стереть эту директиву невозможно (если очистить закрыть диалог и открыть его заново, то все будет по старому)

    3. Почему при неправильно введенном тексте запроса и открытии диалога алиасов полей FR молчит как рыба и показывает пустой список полей вместо того, чтобы сказать, что я идиот и запрос у меня не правильный? Сейчас приходится делать запросу Active=true/Active=false, а это, на увесистых запросах, может занимать несколько минут, хотя для проверки правильности можно всего-навсего сделать Prepare/Unprepare...
    1. Вроде поправил, но лучше пришлите демку, чтобы я мог проверить.
    2. У меня повторить не получилось, опять же, может не то смотрю.
    3. Пустой список - это и есть "я идиот и запрос у меня не правильный" ;)
  • отредактировано October 2004
    В отчете на любом бенде кроме ReportTitle в Restrictions у мемо ставлю frDontMove и мемо улетает в самый верх ReportTitle, и назад возвращаться не хотит.
    Как лечить ?
  • отредактировано 10:57
    function TfrxExpressionCache.Calc(const Expression: String;
    var ErrorMsg: String): Variant;


    Result := v.Value;
    end;

    v.Value=
    Delphi exception EVariantTypeCastError at $F1FF949
    Expression=
    'IIF(<QNormVipis."P_TYPE">=1,<QNormVipis."DOCMONTH">+'/'+<QNormVipis."DOCYEAR">,DateToStr(<QNormVipis."DOCDATE">))'

    и выскакивает ошибка
    Были обнаружены следующие ошибки
    Could not Convert variant type(String) into (Double)

    в каком мемо ничего не сказано.
    в 2.53 Эти отчеты все работали.
    Что тут криминально?? что все становится колом??
    Пример отчета я тебе вчера посылал.
    с багами.
  • отредактировано October 2004
    написал:
    2. У меня повторить не получилось, опять же, может не то смотрю.
    Пока снимается. Вероятно еще какие-то условия должны выполняться... Еще потестю...
    написал:
    3. Пустой список - это и есть "я идиот и запрос у меня не правильный"
    Ага. Только если были заданы алиасы полей, то список не пустой. Просто квайри не работает...

    Еще один баг связанный с поведением Preview из дизайнера в MDI приложении.
    Дело в том, что если для предварительного просмотра выставить свойство MDIPreview=true, то все работает нормально, если только этот просмотр вызван не из дизайнера, который всегда показывается в стиле SDI. Если сделать:
    frxReport1.PreviewOptions.MDICHild:=true;
    frxReport1.DesignReport;
    
    а потом в открывшемся дизайнере нажать Preview (само приложение тоже MDI), то предварительный просмотр, едва показавшись, уходит под окно дизайнера. А если еще и frxReport1.PreviewOptions.Modal:=true....
  • alexghaashalexghaash Йошкар-Ола
    отредактировано 10:57
    Нашел ошибку в TFrxRichView.

    Если TFrxRichView пустой и у него выставлена опция
    StretchMode=smMaxHeight, то он вытягивается по вертикали до почти
    бесконечной длины.
  • alexghaashalexghaash Йошкар-Ола
    отредактировано 10:57
    Проблема с вертикальным бендом.

    1) Когда я кликаю на него, а в нем имеется Memo, то выделяется Memo
    вместе с бендом и в инспекторе я получаю доступ только к общим свойствам
    Memo и бенда. До свойств всего верт.бенда можно добратся только по
    дереву отчета (так стало в версии 3.03).

    2)
    На странице имееются 3 бенда(колонки я так печатаю, переменной ширины)

    TFrxHeader
    |
    MasterData1
    |
    |
    |
    |
    MasterData2(вертикальный).
    В таком случае не работает свойство TFrxHeader.ReprintOnNewPage
  • отредактировано 10:57
    После запуска отчета печатется 2 строчки мастер банда с данными
    потом выскакивает диалог с ошибкой

    Были обнаружены следующие ошибки
    Invalid variant opeation

    в каком месте что за ошибка ничего не понятно
  • отредактировано 10:57
    Если поставить мышкой по правому клику
    что объект не печатаемый он продолжает печататься
    пока в инспекторе не посавишь что он не печатаемый
  • отредактировано 10:57
    Konst написал:
    Если поставить мышкой по правому клику
    что объект не печатаемый он продолжает печататься
    пока в инспекторе не посавишь что он не печатаемый
    Да ну, не может быть. Флажок снимается синхронно в инспекторе.
  • отредактировано 10:57
    alexghaash написал:
    Проблема с вертикальным бендом.

    1) Когда я кликаю на него, а в нем имеется Memo, то выделяется Memo
    вместе с бендом и в инспекторе я получаю доступ только к общим свойствам
    Memo и бенда. До свойств всего верт.бенда можно добратся только по
    дереву отчета (так стало в версии 3.03).

    2)
    На странице имееются 3 бенда(колонки я так печатаю, переменной ширины)

    TFrxHeader
    |
    MasterData1
    |
    |
    |
    |
    MasterData2(вертикальный).
    В таком случае не работает свойство TFrxHeader.ReprintOnNewPage
    1) кликать надо аккуратнее - мемки выделяются только при попытке сдвинуть бэнд.

    2) поправлено
  • отредактировано 10:57
    AlexTZ написал:
    AlexTZ написал:
    Если поставить мышкой по правому клику
    что объект не печатаемый он продолжает печататься
    пока в инспекторе не посавишь что он не печатаемый
    Да ну, не может быть. Флажок снимается синхронно в инспекторе.
    Стоит не печатаемый флажек
    и флажок видимый.

    т.е не совсем ясно если объект не должен печататься
    то нужно ставить
    не видимый не печаемый.
    тогда он действительно не печатается

  • отредактировано 10:57
    Замечено на 3.03(Delphi 7 + update 1)

    У memo есть выпадающий список полей для набора текущего банда. После выбора другого поля значение DataField в свойствах меняется, а в мемо остается старое значение. Хотя обратная ситуация отрабатывается нормально (если менять DataField)
  • отредактировано 10:57
    Konst написал:
    Стоит не печатаемый флажек
    и флажок видимый.

    т.е не совсем ясно если объект не должен печататься
    то нужно ставить
    не видимый не печаемый.
    тогда он действительно не печатается
    Если Visible = false, то не увидишь нигде, ни в превью, ни на печати.
    Если Printable = false, то в превью будет, на печати - нет.
  • отредактировано 10:57
    Здравствуйте.
    Если на форме диалога разместить TEdit и установить у него цвет clBtnFace, то значение цвета не сохраняется в отчет. Если же поставить, например, clBtnText то все нормально. Версия 3.03.

    С уважением, Юрий В. Забурдаев.
  • отредактировано 10:57
    После экспорта из 2.53 у всех объектов ShiftMode=smAlways и StrechMode=smMaxHeight. По этой причине отчет просто умирает при выполнении, т.к. очень много линий и мемо которые накладыаются один на другой. Пример отправлял вчера на tz at fast-report.com.
  • отредактировано 10:57
    Ты воспользуйся моим мастером поиском замены.
    там все это лечится...

    нажимаешь найти проперь такую то
    тебе полный список где есть такое.
    нажимаешь заменить у конкретного или
    у всех сразу. и проперть меняется.

    я тока с этим отчеты перевожу.

  • отредактировано 10:57
    На форме:
    frxRetport
    frxDBDataset1
    frxDBDataset2

    frxDBDataset1 ставлю в датасет к frxRetport

    Создаю отчет, привязываею frxDBDataset1 к мастердата
    Кидаю туда мемо и связываю его с одним из полей в frxDBDataset1
    Запускаю, все нормально

    Теперь кидаю еще один мемо на ReportTitle и связываю его с одним из полей в frxDBDataset2
    Или создаю переменную которую свзявываю с frxDBDataset2

    При формировании репорт ругается что такое поле не найдено, че делать ?

  • отредактировано 10:57
    Запусти поиск найдутся все вхождения что там не найдено.
    и смотри.
    в тройке он ончень чувствителен к скобкам. [] <>
    поиграй ими

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.