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

Применяется к
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 значение для -4.94065645841247E-324 отрицательных значений; 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 отрицательных значений; 1.401298E-45 значение — 3.402823E38 для положительных значений.
CStr String Возвращаемое значение зависит от аргумента expression .
CVar Variant Тот же диапазон, что и Double для числовых значений. Тот же диапазон, что и String для ненумерных значений.

Замечания

Если объект, expression передаваемый в функцию, находится за пределами диапазона типа данных, в который выполняется преобразование, возникает ошибка.

Как правило, код можно документировать с помощью функций преобразования типов данных, чтобы показать, что результат операции должен использовать определенный тип данных вместо типа по умолчанию. Например, используйте для CCur принудительной арифметики валют в случаях, когда обычно происходит арифметика с одной точностью, двойной точностью или целым числом.

Используйте функции преобразования типов данных вместо Val того, чтобы обеспечить преобразование с учетом языкового стандарта из одного типа данных в другой. Например, при использовании CCurAccess распознает различные разделители десятичных разрядов, тысячи разделителей и параметры валюты на основе языковых параметров компьютера.

Если дробная часть имеет точное 0.5значение , CInt и CLng всегда округляет ее до ближайшего четного числа. Например, 0.5 округляет до 0, а 1.5 округляет до 2. CInt и CLng отличаются от Fix функций и Int , которые усекивают дробную часть числа вместо округления. Fix а Int также всегда возвращает значение того же типа, которое передается.

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

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

Функция CVDate также доступна для совместимости с более ранними версиями Visual Basic. Синтаксис CVDate функции идентичен CDate . Однако возвращает объект , CVDate подтип которого имеет значение Date вместо фактического DateVariant типа. Так как 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 , если значение true и 0 значение false.
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 см. в справочнике по VBA access.

Функция 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.