cancel
Showing results for 
Search instead for 
Did you mean: 

CrystalReports 数値フィールドの有効桁数

Former Member
0 Kudos

池田と申します。識者の方のご助言を頂けましたら幸いです。

数値(int32)の印字桁数は CrystalReports だけで完結することは可能でしょうか。

フィールド幅を超えるサイズの数値をプレビュー、印刷すると"#"表記になってしまいますが、

最終的には途中で文字が切れてしまってもそのまま印刷したいのです。

フィールドクリッピングを有効にしてみましたが特に変化はありません。CrystalReports 上で

計算も行っている既存の帳票なため、加工したデータを渡すのは最終手段として考えています。

SAP BusinessObjects Crystal Reports 2013 Support Pack1 v14.1.1.1036

CR4VS2010 v13.0.10.1385

Visual Stusio 2012

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

おはようございます。

質問の意図からはずしていたらごめんなさい。

フィールド幅を超えてしまい「#####」表示となり、帳票の制約で幅を広げれない場合

フォントサイズの制御で行っています。

フィールドの書式→書式エディタからフォントタブのフォントサイズの式を開き

以下の様な書式でフォントサイズを制御すればきれいにおさまると思います。

if [フィールドint]>9999 then

8

else if [フィールドint]>99999 then

7

else

10

これは文字列でも当然使えますので、フィールド幅に制約がある場合に有効な手法です。

以上

Former Member
0 Kudos

池田です。ご返信ありがとうございます。

こちら試してみたいと思います。

Former Member
0 Kudos

式フィールドを利用することで固定された桁数で表示させることが可能です。

以下の例では、数値フィールドを文字列に変換し、最初の文字から8文字を表示させています。

(記述例)

WhilePrintingRecords;

Mid(ToText([フィールドint]), 1, 8);

該当フィールドの最大の表示可能な桁数が判明していれば、その桁数に合わせて3つ目のパラメータを変更いただくことになります。この場合、フォントサイズの変更は必要ないと思います。


また、以下のような記述も可能です。文字列に変換しているので小数点が含まれている場合、文字列の長さに含まれますのでご注意ください。

(記述例)

WhilePrintingRecords;

StringVar txtst:= ToText([フィールドint]);

If len(txtst) > 8 then

Mid(txtst,1,8)

else

txtst

Yoshi Takase

Support Engineer, SAP Active Global Support

SAP Canada Inc.

Answers (0)