類型轉換函數

套用到
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 負值的 to -4.94065645841247E-324 ; 4.94065645841247E-324 正值的 to 1.79769313486232E308
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 負值的 to -1.401298E-45 ; 1.401298E-45 正值的 to 3.402823E38
CStr String 回傳值取決於參數本身。expression
CVar Variant 範圍和 Double 數字值一樣。 範圍和 String 非數字值相同。

註解

如果傳給函式的值 expression 超出你要轉換的資料型態範圍,就會發生錯誤。

一般來說,你可以用資料型別轉換函數來記錄程式碼,顯示操作結果應該使用特定資料型別而非預設型別。 例如,在通常會進行單精度、雙精度或整數運算的情況下,用來 CCur 強制貨幣運算。

使用資料型別轉換功能,而非 Val 提供區域感知型別的轉換。 例如,當你使用 CCur時,Access 會根據你電腦的地點設定辨識不同的十進位分隔符、千分隔符和貨幣選項。

當分數部分正好 0.5為 時, CIntCLng 總是將其四捨五入為最近的偶數。 例如, 0.5 四捨五入到 0,四 1.5 捨五入到 2CIntCLngFixInt 函數不同,後者截斷數字的分數部分而非四捨五入。 Fix 而且 Int 總是回傳你輸入的值類型相同。

使用該 IsDate 函數判斷是否 date 能轉換為日期或時間。 CDate 識別日期字面值與時間字面值,以及部分位於可接受日期範圍內的數字。 當你把數字轉換成日期時,整個數字部分就變成了日期。 任何分數部分都變成從午夜開始的時間。

CDate 會依照你的系統地點設定辨識日期格式。 如果你提供非認可日期設定的格式,Access 可能無法判斷正確的日、月、年順序。 此外,如果長日期格式同時包含星期幾字串,則無法辨識。

CVDate 函式也可與早期版本的 Visual Basic 相容。 的 CVDate 語法與函 CDate 數相同。 然而,回 CVDate 傳的子 Variant 型別是 , Date 而非實際 Date 型別。 因為 Access 現在包含了內在 Date 型態,你不再需要 CVDate。 你也可以透過將一個表達式轉換成 a Date ,再指派給 Variant。 此技術與其他內在類型轉換為其等效 Variant 子類型是一致的。

注意

這個 CDec 函式不會回傳離散資料型別。 相反地,它總是回傳 Variant 一個,而該值已被轉換成子 Decimal 型。

查詢範例

Expression 結果​​
SELECT SalePrice, FinalPrice, CBool(SalePrice > FinalPrice) AS Expr1 FROM productSales; 返回 SalePriceFinalPrice,並評估 是否 SalePrice 大於 FinalPrice。 如果是真0,如果是假,則回傳-1
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.