2011-10-17 18 views
2

異なるローカライズのCrystal Reportsエクスポートを使用しています。この例では、ユーロを使用するフランス語にローカリゼーションを設定しようとしています。Crystal Reports Localaizationは通貨記号を変更しません

私は、次の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に慣れていません。

私はVisual Studio 2010と.Net 3.5でCrystal Reports 10.5を使用しています。

ご意見やご感想はありがとうございます。

答えて

3

私はそれを理解し、私が行った研究に基づいて、これを行う唯一の方法だと思います。

私はシンボルが意図的に変わらないと確信しています。 1つのタイプの通貨に対してのみレポートが使用されるという論理に従うと、フォーマットがカルチャーとともに変更されても、実際の通貨の値は同じです。レポートがどの言語で表示されていても、この方法で$ 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でアンダースコアが使用されます。

ログの巻き戻しの種類ですが、うまくいけば、これは他の人に役立つでしょう。

関連する問題