แต่ละฟังก์ชันบังคับให้นิพจน์เป็นชนิดข้อมูลที่เฉพาะเจาะจง
ไวยากรณ์
CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CSng(expression)
CStr(expression)
CVar(expression)
อาร์กิวเมนต์นิพจน์ที่จําเป็นต้องมีคือนิพจน์สตริงหรือนิพจน์ตัวเลขใดๆ
ชนิดการส่งคืน
ชื่อฟังก์ชันจะกําหนดชนิดการส่งกลับตามที่แสดงดังต่อไปนี้:
| ฟังก์ชัน | ชนิดการส่งคืน | ช่วงสําหรับอาร์กิวเมนต์ของนิพจน์ |
|---|---|---|
| CBool | บูลีน | นิพจน์สตริงหรือตัวเลขที่ถูกต้องใดก็ได้ |
| CByte | ไบต์ | 0 ถึง 255 |
| CCur | สกุลเงิน | -922,337,203,685,477.5808 ถึง 922,337,203,685,477.5807 |
| CDate | วันที่ | นิพจน์วันที่ที่ถูกต้องใดก็ได้ |
| CDbl | Double | -1.79769313486231E308 เป็น -4.94065645841247E-324 สําหรับค่าลบ 4.94065645841247E-324 ถึง 1.79769313486232E308 สําหรับค่าบวก |
| CDec | Decimal | +/-79,228,162,514,264,337,593,543,950,335 สําหรับเลขศูนย์ที่ปรับมาตราส่วน นั่นคือ ตัวเลขที่ไม่มีตําแหน่งทศนิยม สําหรับตัวเลขที่มีตําแหน่งทศนิยม 28 ตําแหน่ง ช่วงคือ +/-7.9228162514264337593543950335. จํานวนที่ไม่มีศูนย์ที่น้อยที่สุดที่เป็นไปได้คือ 0.000000000000000000000000000000001 |
| CInt | จำนวนเต็ม | -32,768 ถึง 32,767 เศษส่วนจะถูกปัดเศษ |
| CLng | ยาว | -2,147,483,648 ถึง 2,147,483,647 เศษส่วนจะถูกปัดเศษ |
| CSng | Single | -3.402823E38 ถึง -1.401298E-45 สําหรับค่าลบ 1.401298E-45 ถึง 3.402823E38 สําหรับค่าบวก |
| CStr | สตริง | ส่งกลับค่าสําหรับ CStr ขึ้นอยู่กับอาร์กิวเมนต์ของนิพจน์ |
| CVar | ตัว แปร | ช่วงเดียวกันกับ สองชั้น สําหรับตัวเลข ช่วงเดียวกันกับ สตริง สําหรับข้อมูลที่ไม่ใช่ตัวเลข |
ข้อสังเกต
ถ้า นิพจน์ ที่ส่งผ่านไปยังฟังก์ชันอยู่นอกช่วงของชนิดข้อมูลที่จะถูกแปลง จะเกิดข้อผิดพลาดขึ้น
โดยทั่วไปแล้ว คุณสามารถจัดทําเอกสารโค้ดของคุณโดยใช้ฟังก์ชันการแปลงชนิดข้อมูลเพื่อแสดงว่าผลลัพธ์ของการดําเนินการบางอย่างควรแสดงเป็นชนิดข้อมูลเฉพาะแทนที่จะเป็นชนิดข้อมูลเริ่มต้น ตัวอย่างเช่น ใช้ CCur เพื่อบังคับให้ใส่เลขคณิตของสกุลเงินในกรณีที่มีความแม่นยําเดียว ความแม่นยําสองเท่า หรือจํานวนเต็มตามปกติ
คุณควรใช้ฟังก์ชันการแปลงชนิดข้อมูลแทน Val เพื่อให้การแปลงที่ทราบในระดับสากลจากชนิดข้อมูลหนึ่งไปเป็นอีกชนิดข้อมูลหนึ่ง ตัวอย่างเช่น เมื่อคุณใช้ CCur ตัวคั่นทศนิยมที่แตกต่างกัน ตัวคั่นหลักพันที่แตกต่างกัน และตัวเลือกสกุลเงินต่างๆ จะรู้จักอย่างเหมาะสม โดยขึ้นอยู่กับการตั้งค่าตําแหน่งที่ตั้งของคอมพิวเตอร์ของคุณ
เมื่อส่วนที่เป็นเศษส่วนเท่ากับ 0.5 แล้ว CInt และ CLng จะปัดเศษเป็นเลขคู่ที่ใกล้ที่สุดเสมอ ตัวอย่างเช่น 0.5 ปัดเศษเป็น 0 และ 1.5 จะปัดเศษเป็น 2 CInt และ CLng แตกต่างจากฟังก์ชัน Fix และ Int ซึ่งตัดทอนแทนที่จะปัดเศษส่วนที่เป็นเศษส่วนของตัวเลข นอกจากนี้ แก้ไข และ Int จะส่งกลับค่าชนิดเดียวกันกับส่งผ่านเสมอ
ใช้ฟังก์ชัน IsDate เพื่อกําหนดว่า วันที่ สามารถแปลงเป็นวันที่หรือเวลาได้หรือไม่ CDate จะจดจําสัญพจน์วันที่และตัวอักษรของเวลา รวมถึงตัวเลขบางตัวที่อยู่ในช่วงของวันที่ที่ยอมรับได้ เมื่อแปลงตัวเลขเป็นวันที่ ส่วนจํานวนเต็มจะถูกแปลงเป็นวันที่ ส่วนที่เป็นเศษส่วนของตัวเลขจะถูกแปลงเป็นเวลาของวัน โดยเริ่มต้นที่เที่ยงคืน
CDate จะจดจํารูปแบบวันที่ตามการตั้งค่าตําแหน่งที่ตั้งของระบบของคุณ อาจไม่สามารถกําหนดลําดับของวัน เดือน และปีที่ถูกต้องได้ ถ้ามีการเรียงลําดับในรูปแบบอื่นนอกเหนือจากการตั้งค่าวันที่ที่รู้จัก นอกจากนี้ ระบบไม่รู้จักรูปแบบวันที่แบบยาวถ้ามีสตริงวันในสัปดาห์ด้วย
นอกจากนี้ยังมีฟังก์ชัน CVDate เพื่อความเข้ากันได้กับ Visual Basic รุ่นก่อนหน้า ไวยากรณ์ของฟังก์ชัน CVDate จะเหมือนกับฟังก์ชัน CDate อย่างไรก็ตาม CVDate จะส่งกลับ ตัวแปร ซึ่งมีชนิดย่อยเป็น วันที่ แทนชนิด วันที่ จริง เนื่องจากมีชนิด วันที่ ภายในจึงไม่จําเป็นต้องใช้ CVDate อีกต่อไป เอฟเฟ็กต์เดียวกันสามารถทําได้โดยการแปลงนิพจน์เป็นวันที่ แล้วกําหนดให้เป็น ตัวแปร เทคนิคนี้สอดคล้องกับการแปลงชนิดภายในอื่นๆ ทั้งหมดเป็นชนิดย่อย Variant ที่เทียบเท่ากัน
หมายเหตุ
ฟังก์ชัน CDec ไม่ส่งกลับชนิดข้อมูลแบบแยก แต่ส่งกลับค่าชนิดข้อมูลที่แยกจากกัน แต่จะส่งกลับ ตัวแปร ที่มีการแปลงค่าเป็นชนิดย่อย ทศนิยม เสมอ
ตัวอย่างคิวรี
| นิพจน์ | ผลลัพธ์ |
|---|---|
| SELECT SalePrice,FinalPrice,CBool(SalePrice>FinalPrice) AS Expr1 FROM productSales; | ส่งกลับ "SalePrice", "FinalPrice" และประเมินว่า SalePrice มากกว่าราคาสุดท้ายหรือไม่ ส่งกลับ "-1" ถ้าเป็น true และ "0" ถ้าเป็น false |
| SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales; | ส่งกลับ "ProductID",แปลงค่าในเขตข้อมูล "ปริมาณ" เป็นรูปแบบไบต์ และแสดงในคอลัมน์ Expr1 ส่งกลับ "ProductID" แปลงค่าในเขตข้อมูล "ปริมาณ" เป็นรูปแบบสกุลเงินและแสดงในคอลัมน์ Expr1 |
| SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; | ส่งกลับ "ProductID" แปลงค่าในเขตข้อมูล "DateofSale" เป็นรูปแบบวันที่และแสดงในคอลัมน์ Expr1 |
| SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; | ส่งกลับ "ProductID" แปลงค่าในเขตข้อมูล "Discount" เป็นรูปแบบ Double และแสดงในคอลัมน์ Expr1 |
| SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; | ส่งกลับ "ProductID" แปลงค่าในเขตข้อมูล "Discount" เป็นรูปแบบจํานวนเต็มและแสดงในคอลัมน์ Expr1 |
| SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; | ส่งกลับ "ProductID" แปลงค่าในเขตข้อมูล "Discount" เป็นรูปแบบ Long และแสดงในคอลัมน์ Expr1 |
| SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; | ส่งกลับ "ProductID" แปลงค่าในเขตข้อมูล "Discount" เป็นรูปแบบเดียวและแสดงในคอลัมน์ Expr1 |
| SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; | ส่งกลับ "ProductID" แปลงค่าในเขตข้อมูล "Discount" เป็นรูปแบบสตริงและแสดงในคอลัมน์ Expr1 |
| SELECT ProductID, CVar(Discount) AS Expr1 FROM productSales; | ส่งกลับ "ProductID" แปลงค่าในเขตข้อมูล "Discount" เป็น Double สําหรับค่าตัวเลขและสตริงสําหรับค่าที่ไม่ใช่ตัวเลข |
ตัวอย่าง VBA
หมายเหตุ
ตัวอย่างต่อไปนี้จะสาธิตการใช้ฟังก์ชันนี้ในโมดูล Visual Basic for Applications (VBA) สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการทํางานกับ VBA ให้ดูที่ การอ้างอิง VBA ของ Access
ฟังก์ชัน CBool
ตัวอย่างนี้ใช้ฟังก์ชัน CBool เพื่อแปลงนิพจน์เป็นบูลีน ถ้านิพจน์ประเมินเป็นค่าที่ไม่ใช่ศูนย์ CBool จะส่งกลับเป็น True แต่ถ้านิพจน์มีค่าที่ไม่ใช่ศูนย์ มิฉะนั้นจะส่งกลับเป็นเท็จ
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 เพื่อแปลงนิพจน์เป็นไบต์
Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble is a Double.
MyByte = CByte(MyDouble) ' MyByte contains 126.
ฟังก์ชัน CCur
ตัวอย่างนี้ใช้ฟังก์ชัน CCur เพื่อแปลงนิพจน์เป็นสกุลเงิน
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 เพื่อแปลงสตริงเป็นวันที่ โดยทั่วไปแล้ว ไม่แนะนําให้กําหนดรหัสวันที่และเวลาเป็นสตริง (ดังที่แสดงในตัวอย่างนี้) ใช้สัญพจน์วันที่และสัญพจน์เวลา เช่น #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 เพื่อแปลงค่าตัวเลขเป็นทศนิยม
Dim MyDecimal, MyCurr
MyCurr = 10000000.0587 ' MyCurr is a Currency.
MyDecimal = CDec(MyCurr) ' MyDecimal is a Decimal.
ฟังก์ชัน CInt
ตัวอย่างนี้ใช้ฟังก์ชัน CInt เพื่อแปลงค่าเป็นจํานวนเต็ม
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 เพื่อแปลงค่าตัวเลขเป็นสตริง
Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble is a Double.
MyString = CStr(MyDouble)
' MyString contains "437.324".
ฟังก์ชัน CVar
ตัวอย่างนี้ใช้ฟังก์ชัน CVar เพื่อแปลงนิพจน์เป็น ตัวแปร
Dim MyInt, MyVar
MyInt = 4534 ' MyInt is an Integer.
MyVar = CVar(MyInt & "000")
' MyVar contains the string 4534000.