每个函数将表达式转换为特定数据类型。
语法
CBool(expression)CByte(expression)CCur(expression)CDate(expression)CDbl(expression)CDec(expression)CInt(expression)CLng(expression)CSng(expression)CStr(expression)CVar(expression)
所需的 expression 参数是任何字符串或数值表达式。
返回类型
函数名称确定返回类型,如下表所示:
| 函数 | 返回类型 | 参数范围expression |
|---|---|---|
CBool |
Boolean |
任何有效的字符串或数值表达式。 |
CByte |
Byte |
0 更改为 255。 |
CCur |
Currency |
-922,337,203,685,477.5808 更改为 922,337,203,685,477.5807。 |
CDate |
Date |
任何有效的日期表达式。 |
CDbl |
Double |
-1.79769313486231E308对于-4.94065645841247E-324负值,为 ;1.79769313486232E3084.94065645841247E-324对于正值,则为 。 |
CDec |
Decimal |
+/-79,228,162,514,264,337,593,543,950,335 表示零位数或无小数位数的数字。 对于具有 28 小数位数的数字,范围为 +/-7.9228162514264337593543950335。 可能的最小非零数是 0.0000000000000000000000000001。 |
CInt |
Integer |
-32,768 到 32,767;分数四舍五入。 |
CLng |
Long |
-2,147,483,648 到 2,147,483,647;分数四舍五入。 |
CSng |
Single |
-3.402823E38对于-1.401298E-45负值,为 ;3.402823E381.401298E-45对于正值,则为 。 |
CStr |
String |
返回值取决于 expression 参数。 |
CVar |
Variant |
与数值的范围 Double 相同。 与非数值的范围 String 相同。 |
备注
expression如果传递给函数的 超出了要转换为的数据类型的范围,则会发生错误。
通常,可以使用数据类型转换函数来记录代码,以显示操作的结果应使用特定数据类型而不是默认类型。 例如,在通常发生单精度、双精度或整数算术的情况下,使用 CCur 强制进行货币算术。
使用数据类型转换函数而不是 Val 来提供从一种数据类型到另一种数据类型的区域设置感知转换。 例如,使用 CCur时,Access 会根据计算机的区域设置识别不同的小数分隔符、千位分隔符和货币选项。
当小数部分正好 0.5为 时, CInt 始终 CLng 将其舍入为最接近的偶数。 例如, 0.5 舍入到 0,舍 1.5 入到 2。
CInt 和 CLng 不同于 Fix 和 Int 函数,后者截断数字的小数部分而不是舍入它。
Fix 和 Int 也始终返回传入的相同类型的值。
IsDate使用 函数确定是否date可以转换为日期或时间。
CDate 识别日期文本和时间文本,以及属于可接受日期范围内的一些数字。 将数字转换为日期时,整数部分将成为日期。 任何小数部分都将成为一天中从午夜开始的时间。
CDate 根据系统区域设置识别日期格式。 如果提供的格式不是已识别的日期设置之一,则 Access 可能无法确定日、月和年的正确顺序。 此外,如果还包含星期几字符串,则它无法识别长日期格式。
该 CVDate 函数还可用于与早期版本的 Visual Basic 兼容。 的 CVDate 语法与 CDate 函数相同。 但是, CVDate 返回其 Variant 子类型而不是 Date 实际 Date 类型的 。 由于 Access 现在包含内部 Date 类型,因此不再需要 CVDate。 可以通过将表达式转换为 , Date 然后将其分配给 Variant来获得相同的效果。 此方法与将其他内部类型转换为其等效 Variant 的子类型一致。
注意
函数 CDec 不返回离散数据类型。 相反,它始终返回 Variant 值已转换为 Decimal 子类型的 。
查询示例
| Expression | 结果 |
|---|---|
SELECT SalePrice, FinalPrice, CBool(SalePrice > FinalPrice) AS Expr1 FROM productSales; |
返回 SalePrice 和 FinalPrice,并计算是否 SalePrice 大于 FinalPrice。
-1如果为 true,则返回 ;0如果为 false,则返回 。 |
SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales; |
返回 ProductID,将字段中Byte的值Quantity转换为 ,并在 列中显示它们Expr1。 |
SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; |
返回 ProductID,将字段中Date的值DateofSale转换为 ,并在 列中显示它们Expr1。 |
SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; |
返回 ProductID,将字段中Double的值Discount转换为 ,并在 列中显示它们Expr1。 |
SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; |
返回 ProductID,将字段中Integer的值Discount转换为 ,并在 列中显示它们Expr1。 |
SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; |
返回 ProductID,将字段中Long的值Discount转换为 ,并在 列中显示它们Expr1。 |
SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; |
返回 ProductID,将字段中Single的值Discount转换为 ,并在 列中显示它们Expr1。 |
SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; |
返回 ProductID,将字段中String的值Discount转换为 ,并在 列中显示它们Expr1。 |
SELECT ProductID, CVar(Discount) AS Expr1 FROM productSales; |
返回 ProductID,将数值DiscountDouble转换为 ,并将非数值转换为 String。 |
VBA 示例
注意
以下示例演示如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请参阅 Access VBA 参考。
CBool 函数
此示例使用 CBool 函数将表达式 Boolean转换为 。 如果表达式的计算结果为非零值, CBool 则 True返回 ;否则返回 False。
Dim A, B, Check
A = 5: B = 5 ' Initialize variables.
Check = CBool(A = B) ' Check contains True.
A = 0 ' Define variable.
Check = CBool(A) ' Check contains False.
CByte 函数
此示例使用 CByte 函数将表达式 Byte转换为 。
Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble is a Double.
MyByte = CByte(MyDouble) ' MyByte contains 126.
CCur 函数
此示例使用 CCur 函数将表达式 Currency转换为 。
Dim MyDouble, MyCurr
MyDouble = 543.214588 ' MyDouble is a Double.
MyCurr = CCur(MyDouble * 2)
' Convert result of MyDouble * 2 (1086.429176) to a
' Currency (1086.4292).
CDate 函数
此示例使用 CDate 函数将字符串 Date转换为 。 通常,不建议将日期和时间硬编码为字符串,如本示例所示。 请改用日期文本和时间文本,例如 #2/12/1969# 和 #4:45:23 PM#。
Dim MyDate, MyShortDate, MyTime, MyShortTime
MyDate = "February 12, 1969"
' Convert to Date data type.
MyShortDate = CDate(MyDate)
MyTime = "4:35:47 PM"
' Convert to Date data type.
MyShortTime = CDate(MyTime)
CDbl 函数
此示例使用 CDbl 函数将表达式 Double转换为 。
Dim MyCurr, MyDouble
MyCurr = CCur(234.456784)
' Convert result to a Double.
MyDouble = CDbl(MyCurr * 8.2 * 0.01)
CDec 函数
此示例使用 CDec 函数将数值 Decimal转换为 。
Dim MyDecimal, MyCurr
MyCurr = 10000000.0587 ' MyCurr is a Currency.
MyDecimal = CDec(MyCurr) ' MyDecimal is a Decimal.
CInt 函数
此示例使用 CInt 函数将值转换为 Integer。
Dim MyDouble, MyInt
MyDouble = 2345.5678 ' MyDouble is a Double.
MyInt = CInt(MyDouble) ' MyInt contains 2346.
CLng 函数
此示例使用 CLng 函数将值转换为 Long。
Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45
MyVal2 = 25427.55 ' MyVal1, MyVal2 are Doubles.
MyLong1 = CLng(MyVal1)
' MyLong1 contains 25427.
MyLong2 = CLng(MyVal2)
' MyLong2 contains 25428.
CSng 函数
此示例使用 CSng 函数将值转换为 Single。
Dim MyDouble1, MyDouble2, MySingle1, MySingle2
' MyDouble1, MyDouble2 are Doubles.
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1)
' MySingle1 contains 75.34211.
MySingle2 = CSng(MyDouble2)
' MySingle2 contains 75.34216.
CStr 函数
此示例使用 CStr 函数将数值 String转换为 。
Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble is a Double.
MyString = CStr(MyDouble)
' MyString contains "437.324".
CVar 函数
此示例使用 CVar 函数将表达式 Variant转换为 。
Dim MyInt, MyVar
MyInt = 4534 ' MyInt is an Integer.
MyVar = CVar(MyInt & "000")
' MyVar contains the string 4534000.