类型转换函数

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

每个函数将表达式转换为特定数据类型。

语法

  • 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,76832,767;分数四舍五入。
CLng Long -2,147,483,6482,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 入到 2CIntCLng 不同于 FixInt 函数,后者截断数字的小数部分而不是舍入它。 FixInt 也始终返回传入的相同类型的值。

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; 返回 SalePriceFinalPrice,并计算是否 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转换为 。 如果表达式的计算结果为非零值, CBoolTrue返回 ;否则返回 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.