Непонятка с форматом в RS

Автор Сообщение
vome
Народный форумщик

Зарегистрирован: 17.09.2004
Сообщения: 210
Откуда: Санкт-Петербург -> Москва

Добавлено: 16.05.2013 10:07 Заголовок сообщения: Непонятка с форматом в RS
Кто-нибудь сталкивался с такой проблемой в Репортинге,
есть несколько полей с числовыми значениями, которым присвоен формат: #,##0.00.
В отчете выводится все корректно миллионы и тысячи отделяются как и положено, но при импорте отчета в Excel в первой колонке значения выводятся как текстовые, во всех остальных как число.
Но самое интересное, что в первой строке то же самое числовое значение, с тем же самым форматом выводится как число. А я откуда знаю?

Если знаете решение как победить эту бяку, поделитесь пожалуйста. SOS!!!

Последний раз редактировалось: vome (16.05.2013 10:37), всего редактировалось 1 раз

aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 16.05.2013 15:47 Заголовок сообщения: Re: Непонятка с форматом в RS
По картинке очень трудно понять. Можешь прислать сам RDL файл и выгрузку в Excel? Например, через форму на сайте: http://scala.org.ru/mail/
А не пробовал вместо заумных форматов просто использовать N2 (числовой, 2 знака после запятой)? Теоретически он должен учитывать региональные установки.
Serj
Заслуженный форумщик

Зарегистрирован: 15.12.2006
Сообщения: 90
Откуда: Санкт-Петербург

Добавлено: 17.05.2013 08:05 Заголовок сообщения:
Также важно помнить, что формат: #,##0.00 — это всего лишь вид числа на экране. Проверьте сам способ получения значения, вполне вероятно, что это текст (как тип данных). Если это просто поле из таблицы, проверьте тип поля, возможно нужно просто заменить в строке отчета чистое значение поля на формулу, преобразующую значение поля в число.
vome
Народный форумщик

Зарегистрирован: 17.09.2004
Сообщения: 210
Откуда: Санкт-Петербург -> Москва

Добавлено: 17.05.2013 08:47 Заголовок сообщения:

aav писал(а):
А не пробовал вместо заумных форматов просто использовать N2 (числовой, 2 знака после запятой)? Теоретически он должен учитывать региональные установки.


К сожалению только теоретически, при указании формата N2, поведение Excel не изменяется.

Serj писал(а):
Проверьте сам способ получения значения, вполне вероятно, что это текст (как тип данных). Если это просто поле из таблицы, проверьте тип поля, возможно нужно просто заменить в строке отчета чистое значение поля на формулу, преобразующую значение поля в число.


Данные берутся из временной таблицы

Код:
Create Table #T1(  … amInv numeric(20,2) default (0.00), amTrI numeric(20,2) default (0.00) … )


В результирующем запросе применена конвертация, к первому полю:

Код:
SELECT … convert(numeric(20,2), amInv) amInv, amTrI … FROM #T1 …


В самом запросе в выводимой ячейке еще раз перевожу значение в число:

Код:
VALUE=CDbl(amInv)

, в результате:
amInv — выводится как текст;
amTrI — выводится как число.

Единственное различие между ними это то, что amInv первая колонка в отчете, где выводятся числовые значения.

Где взять бубен? Думаю... Ща как дам больно!..

Второй вопрос, можно ли в РС задать что при импорте в Excel в этот же файл Excel записывается макрос, который автоматически запускается при открытии данного файла?

vome
Народный форумщик

Зарегистрирован: 17.09.2004
Сообщения: 210
Откуда: Санкт-Петербург -> Москва

Добавлено: 17.05.2013 10:03 Заголовок сообщения: И все-таки мы победили!
Причина оказалась до смешного проста.
В поле было выражение :

Код:
Iif(bla-bla-bla, 0, CDbl(amInv))


После замены этого выражения на:

Код:
Iif(bla-bla-bla, CDbl(0), CDbl(amInv))

Ща, как...
Все заработало нормально, странно, что при такой же конструкции во второй колонке, Excel вторую колонку воспринимал как число, а первую как текст.

Воистину неисповедимы пути Мелкомягких! Laughing

Serj
Заслуженный форумщик

Зарегистрирован: 15.12.2006
Сообщения: 90
Откуда: Санкт-Петербург

Добавлено: 20.05.2013 21:11 Заголовок сообщения: Re: И все-таки мы победили!

Цитата:
Iif(bla-bla-bla, CDbl(0), CDbl(amInv))


Это ведь классика! Должно "от зубов отлетать"! Smile

aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 20.05.2013 21:47 Заголовок сообщения: Re: И все-таки мы победили!

Serj писал(а):
Это ведь классика! Должно "от зубов отлетать"! Smile

Самое очевидное (на первый взгляд) часто ускользает от внимания. А так от зубов отлетает, иногда, правда, с зубами вместе Very Happy

vome
Народный форумщик

Зарегистрирован: 17.09.2004
Сообщения: 210
Откуда: Санкт-Петербург -> Москва

Добавлено: 21.05.2013 08:28 Заголовок сообщения: Re: И все-таки мы победили!

Serj писал(а):

Цитата:
Iif(bla-bla-bla, CDbl(0), CDbl(amInv))


Это ведь классика! Smile


Блин, ну почему все такие умные, после того как найдено решение. Wink

aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 21.05.2013 09:18 Заголовок сообщения: Re: И все-таки мы победили!

vome писал(а):
Блин, ну почему все такие умные, после того как найдено решение. Wink

Это же классика! Very Happy

Serj
Заслуженный форумщик

Зарегистрирован: 15.12.2006
Сообщения: 90
Откуда: Санкт-Петербург

Добавлено: 22.05.2013 21:33 Заголовок сообщения: Re: И все-таки мы победили!

vome писал(а):
Блин, ну почему все такие умные, после того как найдено решение. Wink


Не обижайтесь, я думал все должны знать (после нескольких созданных отчётов), что RS "любит" "играть" с типами данных, и всегда нужно строго его ограничивать (особенно в конструкции Iif).