FR 3.19 ошибка "BCDOverflow"

790790
отредактировано 06:48 Раздел: FastReport 3.0
Добавляю запрос, который выводит результатом поле (Varchar 100) из таблицы - это поле не помещается в объект "Текст", выдается ошибка "BCDOverflow". Как избавиться от нее и вывести поле?

Комментарии

  • отредактировано 06:48
    При отображении запроса в DBGrid ошибка присутствует?
  • 790790
    отредактировано December 2005
    Я не понял, где ошибка должна присутсвовать?
  • отредактировано 06:48
    Другими словами, скорее всего это ошибка движка БД а не FR.
    Для подтверждения этого, отобразите результат запроса в таблице DBGrid

    Вот что нашел по этому поводу.
  • 790790
    отредактировано 06:48
    Уважаемый Serq! Дело в том, что я совсем недавно общаюсь с FR ;) и еще меньше с версией 3.19. ;) Я не могу найти обьект "DBGrid", соответсвенно не могу воспользоваться Вашим бесценным советом! Вы бы не могли пояснить - как вывести результат запроса в виде DBGrid?
    Зараннее благодарен!
  • gpigpi
    отредактировано 06:48
    Имеется ввиду TDBGrid. Попробуйте в самом проекте создать запрос и отобразить его реультат в DBGrid
  • 790790
    отредактировано 06:48
    Я нигде не нашел рекомендаций по созданию TDBGrid в FR. Если Вы имеете в виду, что надо проверить дееспособность запроса - то она в норме - просто я проверял его на базе. А вот как делать то, что Вы написали - не знаю, просто я с FR работаю как пользователь, а не как программист. А как пользователь я вижу только возможности вывести результаты поиска в поле "Текс", "Вложенный отчет" (но опять же "Текс"), в общем, наверное это грустно, но я не понимаю как это проверять, а главное что делать с описанной проблемой.
  • отредактировано 06:48
    Не пойму в какой программе вы работаете?
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано 06:48
    790 написал:
    Я нигде не нашел рекомендаций по созданию TDBGrid в FR. Если Вы имеете в виду, что надо проверить дееспособность запроса - то она в норме - просто я проверял его на базе. А вот как делать то, что Вы написали - не знаю, просто я с FR работаю как пользователь, а не как программист. А как пользователь я вижу только возможности вывести результаты поиска в поле "Текс", "Вложенный отчет" (но опять же "Текс"), в общем, наверное это грустно, но я не понимаю как это проверять, а главное что делать с описанной проблемой.
    Свяжитесь с разработчиками вашей прикладной системы, использующей FastReport. У них то наверняка есть Delphi или C Builder, в которых и водится зверь по имени TDBGrid. ;)
  • 790790
    отредактировано 06:48
    написал:
    Не пойму в какой программе вы работаете?
    Местного разлива ;)
  • 790790
    отредактировано 06:48
    Andrew_Sh написал:
    Свяжитесь с разработчиками вашей прикладной системы, использующей FastReport. У них то наверняка есть Delphi или C Builder, в которых и водится зверь по имени TDBGrid. ;)
    Спасибо большое за совет, чуть раньше прочитанного дошло, что надо разработчиков "за горло подержать", вот пытаюсь, пока ничего... Не признаются.
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано December 2005
    Проблема с BcdOverflow была при работе с DBExpress-компонентами в Delphi 6. Посмотрите решение здесь
    Under Oracle division-expressions (i.e. avg) results in BcdOverflow.

    ===================================================
    Description
    I assume Oracle sends 38 significant digits for its numbers.
    If you have a select-statement including a quotient like "sum(a_field)/123 a_value" or a "avg(a_field) avg_value" the function NormalizeBcdData in SqlExpr.pas raises "DatabaseError(SBcdOverflow)".
    This error is due to MaxFMTBcdDigits = 32.

    You can test it with the attached project. It uses the round function to demonstrate the problem:

    Ok: SELECT round(4/3,31) ZAHL from dual

    Overflow: SELECT round(4/3,32) ZAHL from dual

    It would be nice if DBExpress would handle this Oracle-caused-Problem, because its not so easy to recognize the "overflow" in data like 1.33333...

    Steps to Reproduce:
    1. Open the project BcdOverflow.dpr
    2. point con (TSQLConnection) to a valid oracle-connection (Params:DataBase=xxxx, Password=xxxx, User_Name=xxxx)
    3. start the project
    4. you see 1.3333333 in the TDBGrid
    5. change the SpinEdit-value from 31 to 32
    6. BcdOverflow raises.

    Workarounds
    For all quotients or average use a round that results in less then 32 significant digits.
    Round(..,20) should be quite enough.

    ===================================================

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

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