通常、Crystal Reports では、型変換関数を明示的に指定しない限り、ある型の値が期待されるところで別の型の値を使用することはできません。例 :
Local StringVar postalCode; //エラー - 文字列型に数値を代入しています postalCode := 10025; //OK - 型変換関数 CStr を使用して //"10025" を作成しています postalCode := CStr (10025, 0);
ただし、自動的に変換される場合もあります。
たとえば、次の代入は正しく実行されます。
Local CurrencyVar cost; //cost := $10 と同じです cost := 10; Local DateTimeVar orderDate; //orderDate := CDateTime (1999, 9, 23, 0, 0, 0) と同じです orderDate := CDate (1999, 9, 23); Local NumberVar Range aRange; //aRange := 20 To 20 と同じです aRange := 20; Local NumberVar Range Array aRangeArray; //aRangeArray := [10 To 10, 20 To 25, 2 To 2] と同じです aRangeArray := [10, 20 To 25, 2];
注 次のような逆の変換はされません。例 :
Local NumberVar num; num := 5 + $10; //エラー //OK - CDbl 関数を使って数値型に変換しています num := CDbl (5 + $10) //ToNumber を使用することもできます
5 は $5 に変換され、$10 に加算されて $15 になります。ただし、この通貨型の値は、自動的には数値型の変数 num に代入できません。通貨型から数値型へ自動的には変換されないからです。同様に、通貨型の引数を受け取る関数には、通貨型の代わりに数値型の引数を指定でき、その数値型の引数は通貨型に自動変換されます。反対に、数値型の引数を受け取る関数には、あらかじめ CDbl を使って明示的に数値型に変換しない限り、通貨型の引数を指定できません。