DBCross-Tab - "Invalid variant operation"

grigri
отредактировано 05:27 Раздел: FastReport Studio
борьба с передачей датасета в дизайнер вроде бы завершилась победой, но появилась следущая проблема - кросс-таб строится только тогда, когда в поле на пересечении стоит DBNull. Как только там оказывается какое-то значение, репорт не строится и появляется такое сообщение "The following error have occured: Invalid variant operation". Причем такое поведение что в превью дизайнера, что в report.ShowReport()
Поле типа decimal.
В чем грабли?

Комментарии

  • отредактировано 05:27
    возможно, поле не совсем типа decimal, а, например, строковое ;)
    Попробуйте отключить суммирование в ячейках кросса, скорее всего, ошибка пропадет. Если так, то поле действительно строкового типа.
  • grigri
    отредактировано 05:27
    2 AlexTZ

    у меня в датасете оно точно decimal. В этом я уверен. ;)
    Может оно при переходе от DataTable к FrxDataTable ломается?
    Суммирование тоже отключил - не помогает.
    Попробовал другие поля - с интеджером или стрингом ошибки не возникает. Все-таки что-то с децималом?
  • отредактировано 05:27
    А проблема решается просто добавлением в метода FrxDataTable:

    private void OnGetValueHandler(object VarName, out object Val)
    {
    Val = Rows[nItem][VarName.ToString()];
    if( Val is decimal )
    Val =( double )(( decimal )Val );

    }
  • grigri
    отредактировано 05:27
    2 vlad_galaxy

    спасибо.
    Т.е. оно действительно ломается на переходе от DataTable к FrxDataTable.
    Интересно почему? В Дельфи не было типа decimal?
  • отредактировано 05:27
    Про decimal COM ничего не знает. На мой взгляд, это одна из множества причин написания чисто нетовского отчетника.
  • grigri
    отредактировано 05:27
    точно! там же еще СОМ посредине тусуется. ;)

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

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