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