Функції перетворення типу

Застосовується до
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 того, щоб надавати перетворення з урахуванням локалізації з одного типу даних на інший. Наприклад, якщо використовується CCur, Access розпізнає різні десяткові роздільники, роздільники тисяч і грошові одиниці на основі регіональних параметрів комп'ютера.

Коли дробову частину точно 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 повертає Variant підтип, підтип якого замість Date фактичного Date типу. Оскільки access тепер містить вбудований Date тип, вам більше не потрібен CVDate. Такий самий ефект можна отримати, перетворивши вираз на a Date , а потім призначивши його Variant. Цей метод узгоджується з перетворенням інших внутрішніх типів на еквівалентні Variant підтипи.

Примітка.

Функція CDec не повертає дискретний тип даних. Натомість завжди повертається Variant значення, значення якого перетворено на Decimal підтип.

Приклади запитів

Вираз Результати
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, перетворює значення в полі на QuantityByte, і відображає їх у Expr1 стовпці.
SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; Повертає ProductID, перетворює значення в полі на DateofSaleDate, і відображає їх у Expr1 стовпці.
SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; Повертає ProductID, перетворює значення в полі на DiscountDouble, і відображає їх у Expr1 стовпці.
SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; Повертає ProductID, перетворює значення в полі на DiscountInteger, і відображає їх у Expr1 стовпці.
SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; Повертає ProductID, перетворює значення в полі на DiscountLong, і відображає їх у Expr1 стовпці.
SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; Повертає ProductID, перетворює значення в полі на DiscountSingle, і відображає їх у Expr1 стовпці.
SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; Повертає ProductID, перетворює значення в полі на DiscountString, і відображає їх у 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 Якщо вираз обчислюється як ненульове значення, 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.