Форматирование числового поля с десятичным разделителем в зависимости от языковых настроек

Мне нужно отформатировать несколько числовых полей, чтобы они отображали различное количество десятичных знаков и т. Д., Сохраняя при этом правильные разделители для десятичных и тысяч в зависимости от региональных настроек, то есть - 1,234,567 (английский) - 1,234,567 (немецкий)

Нет проблем, если числовое поле может быть отображено с использованием системного числового формата по умолчанию. Но когда я пытаюсь углубиться в Custom Style, начинают появляться проблемы. Я могу изменить количество десятичных знаков, но в то же время десятичный разделитель и разделитель тысяч не меняются, поэтому при выполнении отчета они остаются такими же, как определено (,.), Независимо от того, какой языковой стандарт я использую (немецкий или английский) . И я не могу их изменить, потому что они должны отображаться динамически с использованием локальной настройки.

Это ошибка в Crystal Reports (я использую версию 11)?

Можно ли программно получить значение текущего десятичного разделителя и разделителя тысяч и использовать его в формуле? Например, в Oracle Reports можно использовать D и G в качестве разделителя, поэтому маска формата выглядит как «999G999G999G990D000» - можно ли сделать то же самое в Crystal Reports?

В java, который вызывает отчет, мы используем только метод setLocale - может быть, нужно использовать что-то еще?


person Rondzio    schedule 10.06.2014    source источник


Ответы (1)


Насколько мне известно, нет возможности напрямую получить символы локальной системы для разделителя тысяч и десятичной дроби. Однако вы можете вручную проверить языковой стандарт с помощью переменной contentlocale и выбрать соответствующее форматирование.

Например, чтобы отобразить "." в качестве десятичного символа для американского английского вы можете ввести формулу if contentlocale="en_US" then '.' else ','

Экран настроек числового поля

person Ryan    schedule 10.06.2014
comment
Спасибо, Райан, это могло быть полезно! - person Rondzio; 10.06.2014