Я пытаюсь создать отчет, который может переключаться между английским и (канадским) французским форматированием чисел (1 234,56 против 1 234,56), но у меня есть некоторые проблемы.
Прежде чем я перейду к тому, что я пробовал, я хотел бы сказать, что в прошлом мы всегда преобразовывали французское число в символ, а затем делали там соответствующие модификации строки, но это, очевидно, не лучшее решение, и я Я пытаюсь найти что-то лучшее в будущем.
Первое, что я попытался сделать, это добавить следующую строку в триггер BEFORE REPORT в самом отчете Oracle:
srw.do_sql ('alter session set nls_numeric_characters = '', ''');
Мои числовые поля настроены с маской формата «(NNNGNNNGNN0D00)», поэтому я предполагаю, что G и D будут использовать настройку сеанса NLS_NUMERIC_CHARACTERS, но, похоже, это не так.
Чтобы увидеть, действительно ли менялись настройки, я создал следующий запрос в отчете и отобразил его вывод:
select value from nls_session_parameters
where parameter = 'NLS_NUMERIC_CHARACTERS';
Конечно, вывод изменился с '.,' на ',' с помощью моей команды alter session.
После дополнительных исследований в Интернете я прочитал, что изменения действительно необходимо внести в конфигурацию сервера отчетов Oracle в соответствии с этой документацией - http://docs.oracle.com/cd/B14099_19/bi.1012/b14048./pbr_conf.htm#i1013352
Я связался с командой, ответственной за наш сервер приложений Oracle, и попросил их попробовать вставить конфигурации, необходимые для настройки форматирования чисел на английском и французском языках, и они добавили следующее:
<environment id="EN">
<envVariable name="NLS_LANG" value="AMERICAN_AMERICA.WE8ISO8859P1"/>
</environment>
<environment id="FR">
<envVariable name="NLS_LANG" value="FRENCH_CANADA.WE8ISO8859P1"/>
<envVabiable name="NLS_NUMERIC_CHARACTERS" value="', '"/>
</environment>
Сервер отчетов был перезапущен, и я ввел URL-адрес для запроса отчета вместе с параметром ENVID=FR, но все равно не повезло. Отчет выполняется, но форматирование чисел по-прежнему использует , и . для группировки и десятичного разделения.
Кто-нибудь знает, что нам не хватает или что еще мы могли бы попробовать?
to_char()
function< /а>; не уверен, что это возможно или практично сделать в вашем запросе отчета... - person Alex Poole   schedule 21.03.2014