各関数は式を特定のデータ型に変換します。
構文
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 、正の値は 4.94065645841247E-3241.79769313486232E308 。 |
CDec |
Decimal |
+/-79,228,162,514,264,337,593,543,950,335 0 スケールの数値、または小数点以下の桁数がない数値の場合。 小数点以下の桁数が 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 、正の値は 1.401298E-453.402823E38 。 |
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 日付リテラルと時刻リテラル、および許容日付の範囲内の一部の数値を認識します。 数値を日付に変換すると、数値全体の部分が日付になります。 小数部は、午前 0 時に始まる時刻になります。
CDate システム ロケール設定に従って日付形式を認識します。 認識されている日付設定のいずれか以外の形式を指定すると、Access で日、月、年の正しい順序を決定しない場合があります。 また、曜日の文字列も含まれる場合、長い日付形式は認識されません。
CVDate 関数は、以前のバージョンの Visual Basic との互換性を保つためにも使用できます。
CVDate の構文は CDate 関数と同じです。 ただし、CVDate は、実際のDate型ではなく、サブタイプが Date であるVariantを返します。 Access に組み込み Date 型が含まれるようになったため、 CVDateは不要になりました。 式を Date に変換してから Variantに代入すると、同じ効果が得られます。 この手法は、他の組み込み型を同等の Variant サブタイプに変換する場合と一致しています。
注
CDec 関数は離散データ型を返しません。 その代わりに、値が Decimal サブタイプに変換されたVariantを常に返します。
クエリの例
| 式 | 結果 |
|---|---|
SELECT SalePrice, FinalPrice, CBool(SalePrice > FinalPrice) AS Expr1 FROM productSales; |
SalePrice と FinalPrice を返し、SalePrice が FinalPrice より大きいかどうかを評価します。 true の場合は -1 、false の場合は 0 を返します。 |
SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales; |
ProductID を返し、[Quantity] フィールドの値を Byte に変換し、[Expr1] 列に表示します。 |
SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; |
ProductID を返し、[DateofSale] フィールドの値を Date に変換し、[Expr1] 列に表示します。 |
SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; |
ProductID を返し、[Discount] フィールドの値を Double に変換し、[Expr1] 列に表示します。 |
SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; |
ProductID を返し、[Discount] フィールドの値を Integer に変換し、[Expr1] 列に表示します。 |
SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; |
ProductID を返し、[Discount] フィールドの値を Long に変換し、[Expr1] 列に表示します。 |
SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; |
ProductID を返し、[Discount] フィールドの値を Single に変換し、[Expr1] 列に表示します。 |
SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; |
ProductID を返し、[Discount] フィールドの値を String に変換し、[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 に変換します。 式が 0 以外の値である場合、 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.