Dbcrosstab и Expressions
Здравствуйте.
Пишу отчет.
В отчете использую DBCrossTab - заполняю данными из запроса, в "списке полей, которые образуют ячейки таблицы" вывожу три строки:
Сумма прибыли (из запроса, <CDSQuery3."SUM_CJ">)
"Маржа" (прибыль-расходы, расходы по двум статьям, берутся тоже из запроса: SUM_CJ - SUM_RJ - SUM_EJ)
% (Маржа / Прибыль *100)
Третья строка вываливает ошибку 'invalid floating point operation' (подозреваю, что при делении на 0)
Кода не использую никакого, только стандартные компоненты.
Попробовал обработать вывод прямо в DBCrossTab,
Для всех ячеек DBCrossTab включил проперти AllowExpressions (после каждого выполнения запроса они почему-то сбрасываются на False),
вписал в третью строку условие:
IIF((<CDSQuery3."SUM_CJ">==0),0,((<CDSQuery3."SUM_CJ">-<CDSQuery3."SUM_RJ">-<CDSQuery3."SUM_EJ">))/<CDSQuery3."SUM_CJ">*100)
Это выражение выдает ошибку "')' expected". Я пересчитал скобки, не вижу, в каком месте не хватает закрывающей. Похоже, дело не в количестве скобок.
Понимаю, что описание довольно сумбурное, но объяснить точнее, не приводя запроса и базы, боюсь, не смогу, а привести его - довольно проблематично.
Собственно, вопросов несколько:
- Можно ли использовать "сложные" expressions (с функциями, операторами, а не только арифметику) в выводе DBCrossTab без кода? Как?
- Если нет, как обработать нелегальные операции, например, деление на ноль?
- Почему сбрасывается значение AllowExpressions?
Спасибо.
Пишу отчет.
В отчете использую DBCrossTab - заполняю данными из запроса, в "списке полей, которые образуют ячейки таблицы" вывожу три строки:
Сумма прибыли (из запроса, <CDSQuery3."SUM_CJ">)
"Маржа" (прибыль-расходы, расходы по двум статьям, берутся тоже из запроса: SUM_CJ - SUM_RJ - SUM_EJ)
% (Маржа / Прибыль *100)
Третья строка вываливает ошибку 'invalid floating point operation' (подозреваю, что при делении на 0)
Кода не использую никакого, только стандартные компоненты.
Попробовал обработать вывод прямо в DBCrossTab,
Для всех ячеек DBCrossTab включил проперти AllowExpressions (после каждого выполнения запроса они почему-то сбрасываются на False),
вписал в третью строку условие:
IIF((<CDSQuery3."SUM_CJ">==0),0,((<CDSQuery3."SUM_CJ">-<CDSQuery3."SUM_RJ">-<CDSQuery3."SUM_EJ">))/<CDSQuery3."SUM_CJ">*100)
Это выражение выдает ошибку "')' expected". Я пересчитал скобки, не вижу, в каком месте не хватает закрывающей. Похоже, дело не в количестве скобок.
Понимаю, что описание довольно сумбурное, но объяснить точнее, не приводя запроса и базы, боюсь, не смогу, а привести его - довольно проблематично.
Собственно, вопросов несколько:
- Можно ли использовать "сложные" expressions (с функциями, операторами, а не только арифметику) в выводе DBCrossTab без кода? Как?
- Если нет, как обработать нелегальные операции, например, деление на ноль?
- Почему сбрасывается значение AllowExpressions?
Спасибо.