У меня есть простой отчет служб Reporting Services с несколькими значениями DECIMAL (19,4) из хранимой процедуры.
Я форматирую эти столбцы с помощью «N2», потому что я всегда хочу ровно 2 знака после запятой.
Формат работает правильно в отчете, как и всегда.
Как только я экспортирую его в Excel, хотя в одном из столбцов (последний справа, имеет ли это значение?) Число десятичных знаков увеличивается с 2 до 15, но ТОЛЬКО если значение в ячейке равно 0 (отформатировано изначально как 0,00, конечно).
Если ячейка пуста, она становится пустой и все в порядке. Если он отличается от 0, он отображается правильно. Только значение 0 становится 0,000000000000000
Я пробовал также формат "0.00", но проблема сохраняется.
Когда я открываю Excel, он говорит, что возникла проблема с его открытием.
Все клетки с этим странным зеленым треугольником сигнализируют об ошибке.
Там написано: «Число в этой ячейке отформатировано как текст или перед ним стоит апостроф». Что бы я ни делал с этими значениями, я думаю, что я делаю также со всеми другими значениями того же столбца, поэтому я не могу понять, почему 0 обрабатывается по-разному.
Если я заставлю хранимую процедуру вернуть 1, когда она должна вернуть 0, она будет работать правильно.
[EDIT]
Если я наложу приведение на DECIMAL (19,4) в St.Proc. для этого значения (которое исходит из арифметического вычисления), оно работает !!
Итак, я решил свою проблему, но все же я хотел бы знать, ПОЧЕМУ и убрать ужасные усики CAST
Кстати, код, который я приведу к десятичному типу, в основном:
CASE WHEN B = 0 THEN NULL ELSE 100.0*A/B END
с А и В ДЕСЯТИЧНО (19,4). Проблема возникает только при А = 0.