一般情况下,在 Crystal Reports 中若没有明确提供类型转换函数,则无法在期待某一类型值的位置使用另一类型的值。例如:
Local StringVar postalCode; //Error- assigning a Number value to a String postalCode := 10025; //OK - use the type conversion function CStr //to create "10025" postalCode := CStr (10025, 0);
但是,有几种转换已可以自动进行:
例如,以下赋值是正确的:
Local CurrencyVar cost; //Same as: cost := $10 cost := 10; Local DateTimeVar orderDate; //Same as: orderDate := CDateTime (1999, 9, 23, 0, 0, 0) orderDate := CDate (1999, 9, 23); Local NumberVar Range aRange; //Same as: aRange := 20 To 20 aRange := 20; Local NumberVar Range Array aRangeArray; //Same as : aRangeArray := [10 To 10, 20 To 25, 2 To 2] aRangeArray := [10, 20 To 25, 2];
注意 不允许反向转换。例如:
Local NumberVar num; num := 5 + $10; //Error //OK- convert to Number type using the CDbl function num := CDbl (5 + $10) //Could also use ToNumber
5 转换为 $5 然后与 $10 相加得到 $15。但是,无法自动将该“货币”值赋给“数字”变量 num,因为不允许从“货币”自动转换到“数字”。同样,“数字”参数可以提供给接受“货币”参数的函数,并且“数字”参数将转换为“货币”,而在没有首先使用 CDbl 将“货币”显式转换为“数字”的情况下,“货币”参数就无法提供给接受“数字”参数的函数。