類型轉換函數

Applies To
Access for Microsoft 365 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 負值為 to; 4.94065645841247E-324 為 1.79769313486232E308 正值。
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 負值為 to; 1.401298E-45 為 3.402823E38 正值。
CStr String 傳回值取決於 expression 引數。
CVar Variant 與數值相同的範圍 Double 。 與非數值相同的範圍 String 。

註解

如果傳遞給函數的 expression 值超出您要轉換的目標資料類型範圍,則會發生錯誤。

一般而言,您可以使用資料類型轉換函式來記錄程式碼,以顯示作業結果應使用特定的資料類型,而非預設類型。 例如,在 CCur 通常會出現單精度、雙精度或整數算術的情況下,用來強制貨幣算術。

使用資料類型轉換函數 INSTEAD 來 Val 提供從一種資料類型到另一種資料類型的地區設定感知轉換。 例如,當您使用 CCur時,Access 會根據您電腦的地區設定來辨識不同的小數點分隔符號、千位分隔符號和貨幣選項。

當小數部分正好 0.5是 時 CInt ,請 CLng 一律將其四捨五入到最接近的偶數。 例如, 0.5 四捨五入為 0,四 1.5 捨五入為 2。 CInt 與 CLng and FixInt 函數不同,後者截斷數字的小數部分而不是四捨五入。 Fix 並且 Int 一律傳回您傳入的相同類型的值。

使用函數來 IsDate 判斷 date 是否可以轉換為日期或時間。 CDate 可辨識日期常值和時間常值,以及一些在可接受日期範圍內的數字。 當您將數字轉換成日期時,整數部分會變成日期。 任何小數部分都會變成從午夜開始的時間。

CDate 根據系統地區設定來辨識日期格式。 如果您提供不是其中一個辨識的日期設定的格式,Access 可能無法判斷正確的日、月和年順序。 此外,如果長日期格式也包含星期幾字串,則它無法辨識該格式。

函數 CVDate 也可與舊版 Visual Basic 相容。 的 CVDate 語法與函數相同 CDate 。 不過, CVDate 會傳回 a Variant 的子類型 Date 而非實際 Date 類型。 由於 Access 現在包含內建 Date 類型,因此您不再需要 CVDate。 您可以將運算式轉換為 a Date ,然後將其指派給 Variant. 該技術與將其他內在類型轉換為其等效 Variant 子類型是一致的。

注意

CDec函數不會傳回離散資料類型。 相反地,它一律會傳回 a Variant 的值已轉換成 Decimal 子類型。

查詢範例

Expression 結果​​
SELECT SalePrice, FinalPrice, CBool(SalePrice > FinalPrice) AS Expr1 FROM productSales; 傳回 SalePrice 和 FinalPrice,並評估 SalePrice 是否大於 FinalPrice。 如果為 True0,則傳回 -1 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,會將數 Discount 值轉換成 Double,並將非數值轉換成 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.