Ошибки в 3.04

отредактировано 23:23 Раздел: FastReport 3.0
В дизайнере если с DataTree попытаться сделать Drag&Drop на форму набора у которого нет полей (пустой запрос или параметрический). Происходит большой БАМ и всё схлапывается.
Если у набора есть поля то показываеся значок, что его нельзя бросить.
«13

Комментарии

  • alecsandr Izhevskalecsandr Izhevsk Удмуртия, г. Ижевск
    отредактировано 23:23
    ;) После установки fr 3.04 из страницы отчета стал печататься только маленький квадратик 20Х20мм и подвал страницы, как это исправить? P.S. в fr 3.03 все работает без проблем ;)
  • отредактировано 23:23
    Странно, ибо в файлах frxPrinter, frxPreviewPages (где, собственно, и лежит все отвечающее за печать) со времен 3.03 ничего не менялось.
  • отредактировано October 2004
    Иногда Object Inspector выполняет docking(интересно а как это по русски?) не совсем туда куда надо, он ложится в область легого тулбара. Потом его undocking и ложим на правильное место, не к тулбару. После этого при попытке подвигать сплитером наблюдается довольно интересная анимация :-)

    При переключении между страницами область докинга у левого тулбара перемещается вправо.

    Если закрыть дизайнер с undocking Inspector, а затем снова открыть дизайнер и взвать Inspector, то выбрать на нем ничего не получится. Спасает только View->Options... Restore defaults. При этом Inspector не появляется а появляется только место где он должен быть. После двух нажатий F11 можно наблюдать уже появление более менее нормального Inspector.

    Все легко воспроизводится в frdemo 3.04
  • отредактировано 23:23
    Konst Сообщал об ошибке ( Перейти):
    написал:
    Could not Convert variant type(String) into (Double)

    Я нашел, что возникает она по причине неинициализированных глобальных переменных. Собственно в файле frxAggregate (строка 383) значение переменной, получаемое как Variant, присваивается строке, однако если переменная не инициализорована, то Variant является null, в связи с чем и появляется ошибка.

    Конечно, из проблемы можно выйти, задавая начальные значения переменным в окошке "Список переменных".

    Да только плохо в этой ситуации то, что возникает ошибка даже независимо от того, что я ничего не читаю из неинициализированной переменной, до записи в нее значения, что явно противоречит всем известным нормам программирования. Поэтому вариант с заданием начальных значений - это не наш путь ;)

    Я предлагаю подправить в модуле frxAggregate функцию Check (начинается на строке 370), изложив ее в следующей редации:
      function Check(s: String): Boolean;
      var
        i: Integer;
        ds: TfrxDataSet;
        s1: String;
        VarVal: variant;
      begin
        Result := False;
        if s = '' then Exit;
    
        { searching in the variables }
        i := Report.Variables.IndexOf(s);
        if i <> -1 then
        begin
          VarVal := Report.Variables.Items[i].Value;
          if VarIsNull(VarVal) then
            s := ''
          else
            s := VarVal;
          FindIn(s);
          Result := True;
          Exit;
        end;
    
        { maybe it's a dataset/field? }
        Report.GetDataSetAndField(s, ds, s1);
        if (ds <> nil) and (s1 <> '') then
          Result := True;
      end;
    

    Естественно, что после этого подобные ошибки пропадут, и ФР будет работать, как ему и положено. ;)
  • отредактировано 23:23
    в приложении создаем объект TFrxReport
    frxRpt1:=TFrxReport.Create(self);
    в отчете есть объект TfrxBDEQuery зовется qrMaster
    Делаем так
    TfrxBDEQuery(frxRpt1.FindObject('qrMaster')).ParamByName('1').Value:=1;
    получаем в ответ
    The procedure entry point @Frxcustomdb@TfrxParamItem@SetValue$qqrrx14System@Variant could not be located
    in the dynamic link library frxDB5.bpl.
    Это лечится?
  • отредактировано 23:23
    Boggard написал:
    в приложении создаем объект TFrxReport
    frxRpt1:=TFrxReport.Create(self);
    в отчете есть объект TfrxBDEQuery зовется qrMaster
    Делаем так
    TfrxBDEQuery(frxRpt1.FindObject('qrMaster')).ParamByName('1').Value:=1;
    получаем в ответ
    The procedure entry point @Frxcustomdb@TfrxParamItem@SetValue$qqrrx14System@Variant could not be located
    in the dynamic link library frxDB5.bpl.
    Это лечится?
    Видимо, на пути поиска есть bpl от старой версии. Лечение - удалить все старые bpl на всем компе и переставить FR заново.
  • отредактировано 23:23
    AlexTZ написал:
    Видимо, на пути поиска есть bpl от старой версии. Лечение - удалить все старые bpl на всем компе и переставить FR заново.
    вообще все bpl снес от fastreport'a. перед этим снес сам fastreport. Поставил 3.04. перекомпилировал с поддержкой русского. Та же история.
  • отредактировано 23:23
    Только что столкнулся с интересной проблемой:

    сделал вызов функции IIF внутри процедуры Set, чтобы избежать ошибки от деления, в случае, если знаменатель равен нулю, в подобном виде:
    Set(<MyVariable>, IIF(<MyVariable2> <> 0, MyVariable1/MyVariable2*100, 0))
    

    Запустил отчет в дизайнере на предварительный просмотр и он НАМЕРТВО подвесил компьютер, так что ни Ctrl-Alt-Del не помогает, ни на нажатия клавиш Caps Lock/Num Lock не реагирует (в смысле, лампочки, не переключаются ;) ) И это под Windows XP!

    Помог только Reset.
    Естественно, перед запуском отчета на просмотр я его не сохраниил и пропала получасовая работа.

    После перезагрузки я решил повторить эксперимент, открыл старый вариант отчета, запустил на просмотр - работает. Далее снова добавил вызов IIF в указанной выше форме, запустил просмотр - все повторилось на 100%. Помог только Reset.

    После двух Reset'ов копать глубже у меня желания нету, решил написать в форум и IIF просто избегать.
  • отредактировано 23:23
    Поставил 3.04. С++Builder 6.

    1. "Старые" отчеты с 3.03 перестали работать. Говорит, что нельзя устанавливать одинаковый DataSet для Report и Band или Page и Band.
    Оставил DataSet только в Band'ах. Все работает.
    Это так надо ?

    2. Открываю дизайнер, жму "превью", закрываю "превью" - ошибка "List Index out of bounds (-1)" и при этом весь отчет пустой (пропадают все бенды).
    Закрыл, открыл - все нормально. После "превью" - опять.
    Глючит и в дизайнтайм и в рантайм.
    Что делать ?
  • отредактировано 23:23
    koldovsky написал:
    Только что столкнулся с интересной проблемой:

    сделал вызов функции IIF внутри процедуры Set, чтобы избежать ошибки от деления, в случае, если знаменатель равен нулю, в подобном виде:
    Set(<MyVariable>, IIF(<MyVariable2> <> 0, MyVariable1/MyVariable2*100, 0))
    

    Запустил отчет в дизайнере на предварительный просмотр и он НАМЕРТВО подвесил компьютер, так что ни Ctrl-Alt-Del не помогает, ни на нажатия клавиш Caps Lock/Num Lock не реагирует (в смысле, лампочки, не переключаются ;) ) И это под Windows XP!

    Помог только Reset.
    Естественно, перед запуском отчета на просмотр я его не сохраниил и пропала получасовая работа.

    После перезагрузки я решил повторить эксперимент, открыл старый вариант отчета, запустил на просмотр - работает. Далее снова добавил вызов IIF в указанной выше форме, запустил просмотр - все повторилось на 100%. Помог только Reset.

    После двух Reset'ов копать глубже у меня желания нету, решил написать в форум и IIF просто избегать.
    У меня просто выдал ошибку division by zero и все.
  • отредактировано 23:23
    SterhBy написал:
    Поставил 3.04. С++Builder 6.

    1. "Старые" отчеты с 3.03 перестали работать. Говорит, что нельзя устанавливать одинаковый DataSet для Report и Band или Page и Band.
    Оставил DataSet только в Band'ах. Все работает.
    Это так надо ?

    2. Открываю дизайнер, жму "превью", закрываю "превью" - ошибка "List Index out of bounds (-1)" и при этом весь отчет пустой (пропадают все бенды).
    Закрыл, открыл - все нормально. После "превью" - опять.
    Глючит и в дизайнтайм и в рантайм.
    Что делать ?
    1) так и надо
    2) у меня все нормально. Ждите 3.05 на этой неделе.
  • klbklb
    отредактировано 23:23
    1. В версии 3.04 в дизайнере перестал правильно работать режим «Копирование внешнего вида» Сейчас он работает как-то странно: в большинстве случаев вообще не копирует «внешний вид» в TFrMemoView, но иногда всё же копирует, однако с замедлением в несколько секунд и уже после безуспешных попыток скопировать «внешний вид» в другие TFrMemoView. В версии 3.03 этот режим работал нормально.
    2. Не знаю можно ли это можно считать ошибкой, но всё же стиль для TFrMemoView было бы логично выбирать из выпадающего списка.
    3. После задания FieldAliases в DataSet, расположенных на странице диалога (я проверял на TfrxAdoTable), имена полей в дереве данных остаются прежними.
    4. Опять возвращаюсь к экспорту в Rtf. Ранее я писал, что экспортируемые в RTF отчёты в версии 2.53 не открываются в русском Word 2000. Тогда нам удалось отложить решение проблемы, пообещав пользователям, что после выхода новой версии экспорт будет. Сейчас у нас трёшка. Экспорт не работает. Теперь Word сообщает: «Таблица повреждена», и показывает на экране мусор. Это можно увидеть на любом отчёте из FrDemo.exe. Что касается версии 2.53, я пришлю пример. Александр, приношу извинения за задержку с ответом – я с тех пор не посещал конференцию.
    5. Клавиша «Delete» не позволяет удалить компонент на странице диалога.
    6. Для наборов компонент ADO и DbExpress нельзя использовать Connection из программы. Это не удобно, поскольку требуется ввод пароля, тем более что часто пароль или логин дополнительно шифруются в программе. Кроме того, при дополнительном соединении с MSSQL будут недоступны временные таблицы из основного соединения. Во второй версии таких проблем не было. Может в компонентах TXxxConnection предусмотреть возможность сослаться на Connection из программы?
    7. Еще хочется какую-нибудь кнопочку вроде «Установить стиль по умолчанию»

    Должен сказать, что третья версия оказалась существенно лучше, хотя и менее совместима с предыдущей, чем я ожидал.

    С уважением. Константин Беляков.
  • отредактировано 23:23
    1) Проверил сейчас на демке, все ок. Выбираю мемо, выбираю copy format tool, щелкаю на другом мемо - оно получает формат той мемки, что была выбрана перед нажатием copy format tool.
    2) хорошо, сделаю редактор св-ва.
    3) дерево обновляется при переключении на другую страницу отчета.
    4) ошибка известная, но за неимением ворда2000 пофиксить пока не можем. Вообще странно - результат экспорта открывается во всех версиях word и даже wordpad, а word2000 не открывает.
    5) поправлено.
    6) См. св-во TfrxADOComponents.DefaultDatabase.
    7) есть такая кнопочка, рядом с кнопкой Paste. Вставляем мемку, делаем ей нужное оформление, нажимаем кнопку. Все последующие вставляемые мемки будут иметь аналогичное оформление.
  • отредактировано 23:23
    Переустановил 3.04 в каталог по умолчанию.
    Ситуация изменилась.
    Теперь после выхода из превью в дизайнере "List Index..." не возникает, но зато при закрытии дизайнера возникает "Access violation...", и похоже, что на каждый объект отчета.
    Короче, стало еще хуже чем было...
    Когда ждать 3.05 ?
  • отредактировано 23:23
    Дизайне категорически не сохраняет позицию окна:
    - Был внизу страницы чего-то редактировал.
    - Переключился на другую страницу не важно какую, поправил что хотел
    - Вернулся и начал искать то место где-же я был
    Разве нельзя автоматически спозиционировать на старое место?

    To SterhBy
    У тебя нет в отчете параметрических запросов? С ними была подобная проблема. Вроде разобрались. В 3.05 должна быть исправлена.
  • отредактировано 23:23
    2Markus
    У меня нет в отчете параметрических запросов.
    Отчет делаю с нуля с одним бендом и парой полей.
    Такое впечатление, что версия опять под C++Builder не очень то тестировалась.
  • alexghaashalexghaash Йошкар-Ола
    отредактировано October 2004
    C вертикальным бендом имеются следующие проблемы:

    Как уже писал ранее, при клике на бенд происходит групповое выделение
    обьектов на нем, сам бенд выделить можно через дерево отчета.
    Бенд я НЕ СДВИГАЮ. При нажатии левой кнопки мыши на бенде я вижу
    его свойства, при отпускании происходит групповое выделение обьектов
    на нем. Свойства можно посмотреть, но не изменить. ;) Мышь у меня оптическая, руки не дрожат ;)
  • klbklb
    отредактировано 23:23
    AlexTZ написал:
    1) Проверил сейчас на демке, все ок. Выбираю мемо, выбираю copy format tool, щелкаю на другом мемо - оно получает формат той мемки, что была выбрана перед нажатием copy format tool.
    2) хорошо, сделаю редактор св-ва.
    3) дерево обновляется при переключении на другую страницу отчета.
    4) ошибка известная, но за неимением ворда2000 пофиксить пока не можем. Вообще странно - результат экспорта открывается во всех версиях word и даже wordpad, а word2000 не открывает.
    5) поправлено.
    6) См. св-во TfrxADOComponents.DefaultDatabase.
    7) есть такая кнопочка, рядом с кнопкой Paste. Вставляем мемку, делаем ей нужное оформление, нажимаем кнопку. Все последующие вставляемые мемки будут иметь аналогичное оформление.
    1) Copy format работает только тогда, когда масштаб в дизайнере равен 100%
    4) Это просто беда. Что такое "пока не можем"? Word2000 ещё будет жить достаточно долго. На что мы можем расчитывать?
  • отредактировано 23:23
    У стилей нельзя задать выравнивание шрифта. Разве это не относится к стилю?

    По поводу п.7 про оформление. После закрытия дизайнера и возврата он об этом забывает и приходится снова указать ему какой оформление использовать по умолчанию. Может всётаки вынести это в настройки. Задаются же шрифты для редакторов кода и текста.
  • отредактировано 23:23
    ;)
    Хочу обратить внимание разработчиков, что сообщения об ощибках лучше бы выдавать через стандартный механизм RAISE EXCEPTION, а не использовать для этих целей MessageBox!!!!!!

    Это называется - хрен поймаешь!!!
  • отредактировано 23:23
    SterhBy написал:
    Переустановил 3.04 в каталог по умолчанию.
    Ситуация изменилась.
    Теперь после выхода из превью в дизайнере "List Index..." не возникает, но зато при закрытии дизайнера возникает "Access violation...", и похоже, что на каждый объект отчета.
    Короче, стало еще хуже чем было...
    Когда ждать 3.05 ?
    Поставил FR3.04 в BCB6. Никаких ошибок нет, ни при закрытии превью, ни в дизайнере, ни при выходе. Win98, WinXP.
  • отредактировано 23:23
    alexghaash написал:
    C вертикальным бендом имеются следующие проблемы:

    Как уже писал ранее, при клике на бенд происходит групповое выделение
    обьектов на нем, сам бенд выделить можно через дерево отчета.
    Бенд я НЕ СДВИГАЮ. При нажатии левой кнопки мыши на бенде я вижу
    его свойства, при отпускании происходит групповое выделение обьектов
    на нем. Свойства можно посмотреть, но не изменить. ;) Мышь у меня оптическая, руки не дрожат ;)
    Это возможно, если отключено выравнивание по сетке. Отключать выравнивание не рекомендуется...
  • отредактировано 23:23
    Ejik написал:
    ;)
    Хочу обратить внимание разработчиков, что сообщения об ощибках лучше бы выдавать через стандартный механизм RAISE EXCEPTION, а не использовать для этих целей MessageBox!!!!!!

    Это называется - хрен поймаешь!!!
    У разработчиков свои цели. И raise этим целям не соответствует.
  • отредактировано 23:23
    2AlexTZ
    Странно все это...
    У меня тоже ВСВ6 иWinXP SP2.

    Пробовал поставить 3.04 на Delphi5 (до того был 3,02 и все работало).
    Аналогичные проблемы "Access violation...". Поставил 3.03 - та же фигня. Перекомпилировал пакеты - заработало. Поставил 3.04 - не работает. Перекомпилировал пакеты - заработало.
    Возвращаюсь к ВСВ6, перекомпиляция пакетов проблему не лечит...

    Ради справедливости замечу, что ошибка одинаковая во всех случаях, но возникает в разных местах.
  • отредактировано 23:23
    Почему в тулбаре дизайнера не работает половина кнопок ?
    Выравнивание текста, стиль текста, рамки и пр...

    И еще на большинстве кнопок нет хинтов, а на тех что есть, они не соответствуют языку ресурсов.
  • отредактировано 23:23
    Что то стало ругаться на такую конструкцию:
    var
    S: string;
    begin
    S := '12345';
    if S[1] in ('1', '2') then <- вот здесь
    ....

    Выдает сообщение "Неопределенный идентификатор: '__StringHelper'"

    С уважением, Забурдаев Юрий
  • отредактировано 23:23
    SterhBy написал:
    Почему в тулбаре дизайнера не работает половина кнопок ?
    Выравнивание текста, стиль текста, рамки и пр...

    И еще на большинстве кнопок нет хинтов, а на тех что есть, они не соответствуют языку ресурсов.
    У меня все есть и работает. Какие ресурсы ставите?
  • отредактировано 23:23
    YuraZ написал:
    Что то стало ругаться на такую конструкцию:
    var
    S: string;
    begin
    S := '12345';
    if S[1] in ('1', '2') then <- вот здесь
    ....

    Выдает сообщение "Неопределенный идентификатор: '__StringHelper'"

    С уважением, Забурдаев Юрий
    fs_iinterpreter.pas:
    constructor TfsScript.Create(AOwner: TComponent);
    begin
      inherited;
      FItems := TStringList.Create;
      FItems.Sorted := True;
      FLines := TStringList.Create;
      FStatement := TfsStatement.Create(Self, '', '');
      FSyntaxType := 'PascalScript';
      FUnitLines := TStringList.Create;
      Add('__StringHelper', TfsStringHelper.Create);
      Add('__ArrayHelper', TfsArrayHelper.Create('__ArrayHelper', -1, fvtVariant, ''));
    end;
    
  • отредактировано 23:23
    Только что наткнулся на багофичу: если для датасета стоит OpenDataSource = true, то датасет автоматом открывается только один раз. Если его закрыть, а потом попытаться получить данные, то ФР выдаст Access violation с попыткой обратиться на недоступный участок памяти. Трассировка показывает, что ошибка появляется в TfrxDBDataset.GetValue, а вызывает ее следующая строчка:
       Result := TField(Fields.Objects[i]).Value
    

    Где Fields.Objects ни на что не указывает.

    Возможно, это связано с какими-то проблемами в работе компонент доступа к данным - я использую frxFIBComponents вер. 1.04.

    Да и еще, тут заметил плодотворное обсуждение желаемой функциональности в ФР, решил присоединиться. ;)

    AlexTZ
    написал:
    У разработчиков свои цели. И raise этим целям не соответствует.

    Александр, ты не прав ©. Цели у нас общие, иначе людям с разными целями не по пути.

    Конечно, если ФР будет вылетать от необработанных ошибок, это явно не есть хорошо. Но тоже очень плохо, когда разработчик не имеет контроля над процессом построения отчета и обработкой ошибок. Все-таки вместо Access violation'а который вылетает в определенной ситуации и пугает бабушку-бухгалтера, разработчик мог бы повесить свой обработчик с вежливым предложением ткнуть какю-нить кнопку, чтобы все заработало.

    А посему, предлагается на ваше рассмотрение весьма востребованная фича, например флажок в EngineOptions вроде InterceptExceptions включенный по умолчанию, который можно отключить и ловить ошибки самому (все-таки мелочь, а многим бы пригодилась). Ну, естественно, в этой ситуации приветствуется разветвленная иерархия классов возможных эксепшинов, которые мог бы ловить разработчик и вместо сообщений "Принтер не подключен" выдавать нечто вроде "Уважаемая, Надежда Ивановна, чтобы получить на бумаге то, что нарисовано на экране, сначале нажмите на большую красную кнопку на ящичке, который стоит слева от вашего стола" :)))

  • отредактировано 23:23
    Большинство нештатных исключений перехватывается самим фастом, и выдается на экран (или в Report.Errors - если стоит Report.EngineOptions.SilentMode) в виде понятных сообщений.

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

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