Localization Crystal Reports本地化赢得';不要更改货币符号

Localization Crystal Reports本地化赢得';不要更改货币符号,localization,crystal-reports,Localization,Crystal Reports,我正在使用不同本地化的Crystal Reports导出。对于这个例子,我试图将本地化设置为法语,使用欧元 我使用以下C#代码设置本地化: 导出报告时,将显示以下值: 135,00 $ 请注意,数字的格式已正确更改,但货币符号没有更改 我一直在寻找一个解决方案,但几乎所有的工作都集中在设计时更改货币上,但我需要能够在运行时根据用户选择的一些其他值进行更改 我已经看到了一些关于使用参数传递值和在设计器中使用公式的提示,但我对Crystal Reports还不太熟悉,无法理解 我正在将Crysta

我正在使用不同本地化的Crystal Reports导出。对于这个例子,我试图将本地化设置为法语,使用欧元

我使用以下C#代码设置本地化:

导出报告时,将显示以下值:

135,00 $
请注意,数字的格式已正确更改,但货币符号没有更改

我一直在寻找一个解决方案,但几乎所有的工作都集中在设计时更改货币上,但我需要能够在运行时根据用户选择的一些其他值进行更改

我已经看到了一些关于使用参数传递值和在设计器中使用公式的提示,但我对Crystal Reports还不太熟悉,无法理解

我正在将CrystalReports10.5与VisualStudio2010和.NET3.5一起使用


任何帮助或提示都将不胜感激。

我找到了答案,根据我所做的研究,我认为这是唯一的方法

我很确定这个符号不是故意改变的。按照报告仅用于一种货币类型的逻辑,即使格式会随区域性而变化,实际货币值也是相同的$无论以何种语言查看报告,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在区域设置ID中使用下划线而不是连字符

这是一个冗长的回答,但希望这能帮助其他人

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
    ""