Функции преобразования типа

Применяется к
Access для 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 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,768 до 32,767; дроби округляются.
CLng Long -2,147,483,648 до 2,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равна , CInt и CLng всегда округляйте ее до ближайшего четного числа. Например, 0.5 округляет до 0, а 1.5 округляет до 2. CInt и CLng отличаются от Fix функций and Int , которые усекают дробную часть числа, а не округляют его. Fix а Int также всегда возвращать значение того же типа, что и переданное.

С помощью IsDate этой функции можно определить, можно ли date преобразовать в дату или время. CDate Распознает литералы дат и времени, а также числа, попадающие в допустимый диапазон дат. Если преобразовать число в дату, то вся часть числа становится датой. Любая дробная часть становится временем суток, которое начинается в полночь.

CDate Распознает форматы дат в соответствии с настройками локали системы. Access может неправильно определить порядок дней, месяцев и лет, если задать формат, отличный от одного из распознанных параметров даты. Кроме того, он не распознает длинный формат даты, если он также содержит строку дня недели.

Эта CVDate функция также доступна для совместимости с более ранними версиями Visual Basic. Синтаксис функции CVDate идентичен CDate функции. CVDate Однако возвращает a , Variant подтип которого является Date не фактическим Date типом. Так как Access теперь включает встроенный Date тип, вам больше не нужна CVDate. Такой же эффект можно получить, преобразовав выражение в , Date а затем присвоив Variantего . Этот метод согласуется с преобразованием других внутренних типов в их эквивалентные Variant подтипы.

Примечание

Функция CDec не возвращает дискретный тип данных. Вместо этого он всегда возвращает значение, Variant значение которого было преобразовано в Decimal подтип.

Примеры запросов

Expression Результаты
SELECT SalePrice, FinalPrice, CBool(SalePrice > FinalPrice) AS Expr1 FROM productSales; Возвращает SalePrice и FinalPrice, и оценивает SalePrice , больше FinalPriceли . Возвращает -1 значения "истина" и 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 для приложений (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.