Локализация Crystal Reports не изменит символ валюты - PullRequest
2 голосов
/ 17 октября 2011

Я работаю с экспортом Crystal Reports с другой локализацией.В этом примере я пытаюсь установить локализацию на французский язык, который использует евро.

Я устанавливаю локализацию с помощью следующего кода C #:

    ReportDocument report = new ReportDocument();

    report.ReportClientDocument.LocaleID = CrystalDecisions.ReportAppServer.DataDefModel.CeLocale.ceLocaleFrench;
    report.ReportClientDocument.PreferredViewingLocaleID = CrystalDecisions.ReportAppServer.DataDefModel.CeLocale.ceLocaleFrench;
    report.ReportClientDocument.ProductLocaleID = CrystalDecisions.ReportAppServer.DataDefModel.CeLocale.ceLocaleFrench;

При экспорте отчета следующееотображается значение:

135,00 $

Обратите внимание, что формат числа изменился правильно, но символ валюты не изменился.

Я искал решение, но почти все фокусируетсяпри изменении валюты во время разработки, но мне нужно иметь возможность изменять ее во время выполнения в зависимости от некоторых других значений, которые выбирает пользователь.

Я видел некоторые подсказки вокруг использования параметров для передачи значенияи использую формулу в конструкторе, но я недостаточно знаком с Crystal Reports, чтобы понять это.

Я использую Crystal Reports 10.5 с Visual Studio 2010 и .Net 3.5.

Любая помощь или советы приветствуются.

1 Ответ

3 голосов
/ 20 октября 2011

Я понял это, и на основании проведенного исследования я думаю, что это единственный способ сделать это.

Я почти уверен, что символ не меняется намеренно. Следуя логике, согласно которой отчет используется только для одного типа валюты, даже если формат будет меняться в зависимости от культуры, фактическое значение валюты будет тем же. 100 долларов - это всегда 100 долларов, независимо от того, на каком языке просматривается отчет. Таким образом, отчет не должен беспокоиться о преобразовании данных в другое количество.

В моем приложении данные хранятся как просто числа, а валюта определяется другими значениями в базе данных и кодом.

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

На вкладке «Число» редактора форматов убедитесь, что установлен флажок «Отображать символ валюты». Затем нажмите кнопку «Настроить» и вкладку «Символ валюты». Перейдите в Мастерскую формул для символа валюты и введите следующий код:

Local StringVar locale := LowerCase(ContentLocale);
if locale = "fr_fr" then
    "€"
else if (locale = "en_gb") then 
    "£"
else if(locale = "en_us" OR locale = "en_ca") then
    "$"
else
    ""

Это просто пример языков, которые я поддерживаю, но сейчас, но я думаю, что это понятно. Также обратите внимание, что Crystal использует подчеркивания в идентификаторах локали вместо дефисов.

Отчасти логичный ответ, но, надеюсь, это поможет кому-то еще.

...