Funkcje konwersji typów

Dotyczy
Access dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Każda funkcja konwertuje wyrażenie na określony typ danych.

Składnia

  • CBool(expression)
  • CByte(expression)
  • CCur(expression)
  • CDate(expression)
  • CDbl(expression)
  • CDec(expression)
  • CInt(expression)
  • CLng(expression)
  • CSng(expression)
  • CStr(expression)
  • CVar(expression)

Wymaganym expression argumentem jest dowolny ciąg lub wyrażenie liczbowe.

Zwracane typy

Nazwa funkcji określa zwracany typ, jak pokazano w poniższej tabeli:

Funkcja Zwracany typ Zakres argumentu expression
CBool Boolean Dowolne prawidłowe wyrażenie ciągu lub wyrażenie liczbowe.
CByte Byte 0 do 255.
CCur Currency -922,337,203,685,477.5808 do 922,337,203,685,477.5807.
CDate Date Dowolne prawidłowe wyrażenie daty.
CDbl Double -1.79769313486231E308 To (Do -4.94065645841247E-324 w przypadku wartości ujemnych) i 4.94065645841247E-324 To (Do 1.79769313486232E308 ) w przypadku wartości dodatnich.
CDec Decimal +/-79,228,162,514,264,337,593,543,950,335 W przypadku liczb o zerowej skali lub liczb bez miejsc dziesiętnych. W przypadku liczb z 28 miejscami dziesiętnymi zakres jest następujący +/-7.9228162514264337593543950335: . Najmniejsza możliwa liczba niezerowa to 0.0000000000000000000000000001.
CInt Integer -32,768 do 32,767; ułamki są zaokrąglane.
CLng Long -2,147,483,648 do 2,147,483,647; ułamki są zaokrąglane.
CSng Single -3.402823E38 To (Do -1.401298E-45 w przypadku wartości ujemnych) i 1.401298E-45 To (Do 3.402823E38 ) w przypadku wartości dodatnich.
CStr String Zwracana wartość zależy od argumentu expression .
CVar Variant Ten sam zakres co Double w przypadku wartości liczbowych. Ten sam zakres, co String w przypadku wartości nieliczbowych.

Spostrzeżenia

Jeśli wartość przekazana expression do funkcji znajduje się poza zakresem typu danych, na który jest konwertowany, wystąpi błąd.

Ogólnie rzecz biorąc, kod można udokumentować przy użyciu funkcji konwersji typów danych, aby pokazać, że w wyniku operacji należy użyć określonego typu danych, a nie typu domyślnego. Można na przykład CCur wymusić arytmetykę walutową w przypadkach, gdy normalnie wystąpiłaby arytmetyka o pojedynczej, podwójnej dokładności lub liczbie całkowitej.

Funkcji konwersji typów danych należy Val używać zamiast zapewniania konwersji z uwzględnieniem ustawień regionalnych z jednego typu danych do innego. Na przykład program Access rozpoznaje różne separatory dziesiętne, separatory tysięcy i opcje walutowe w przypadku użycia CCurprogramu , na podstawie ustawień regionalnych komputera.

Gdy część ułamkowa jest dokładnie 0.5, CInt i CLng zawsze zaokrąglaj ją do najbliższej liczby parzystej. Na przykład zaokrągla 0.5 do i 1.5 zaokrągla do 02. CInt i CLng różnią się od Fix funkcji ORAZ Int , które obcinają część ułamkową liczby zamiast ją zaokrąglać. Fix a Int także zawsze zwracać wartość tego samego typu co wartość, którą przekazujesz.

Użyj tej IsDate funkcji, aby określić, czy date można je przekonwertować na datę lub godzinę. CDate Rozpoznaje literały dat i godzin, a także niektóre liczby należące do zakresu dopuszczalnych dat. Po przekonwertowaniu liczby na datę część całkowitą liczby staje się datą. Każdy ułamek staje się porą dnia, która zaczyna się o północy.

CDate Rozpoznaje formaty daty zgodnie z ustawieniami regionalnymi systemu. Program Access może nie określić prawidłowej kolejności dnia, miesiąca i roku, jeśli zostanie podany format inny niż jedno z rozpoznawanych ustawień daty. Ponadto format daty długiej nie jest rozpoznawany, jeśli zawiera również ciąg dni tygodnia.

Funkcja CVDate ta jest również dostępna w celu zapewnienia zgodności ze starszymi wersjami języka Visual Basic. Składnia tego skrótu CVDate jest identyczna jak w przypadku CDate funkcji. Jednak CVDate zwraca podtyp, Variant którego podtypem jest Date , a nie rzeczywistym Date typem. Ponieważ program Access zawiera teraz typ wewnętrzny Date , nie potrzebujesz CVDatejuż plików . Ten sam efekt można uzyskać, konwertując wyrażenie na a Date i przypisując je do Variant. Technika ta jest zgodna z konwersją innych typów wewnętrznych na równoważne Variant podtypy.

Uwaga

Ta CDec funkcja nie zwraca dyskretnego typu danych. Zamiast tego zawsze zwraca a, Variant którego wartość została przekonwertowana na Decimal podtyp.

Przykłady kwerend

Expression Wyniki
SELECT SalePrice, FinalPrice, CBool(SalePrice > FinalPrice) AS Expr1 FROM productSales; Zwraca SalePrice and FinalPricei i ustala, czy SalePrice jest większe niż FinalPrice. Zwraca wartość -1 , jeśli jest to prawda i 0 jeśli jest fałszywa.
SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w Quantity polu na Bytewartości i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w DateofSale polu na Datewartości i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w Discount polu na Doublewartości i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w Discount polu na Integerwartości i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w Discount polu na Longwartości i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w Discount polu na Singlewartości i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w Discount polu na Stringwartości i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CVar(Discount) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości liczbowe Discount na Double, a wartości nieliczbowe na String.

Przykłady kodu VBA

Uwaga

W poniższych przykładach pokazano, jak używać tej funkcji w module języka Visual Basic for Applications (VBA). Aby uzyskać więcej informacji na temat pracy z językiem VBA, zobacz dokumentację języka VBA w programie Access.

CBool

W tym przykładzie użyto tej CBool funkcji do przekonwertowania wyrażenia na wyrażenie Boolean Jeśli wynikiem wyrażenia jest wartość CBool różna od zera, zwraca True; w przeciwnym razie zwraca 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

W tym przykładzie użyto tej CByte funkcji do przekonwertowania wyrażenia na wyrażenie Byte

Dim MyDouble, MyByte
MyDouble = 125.5678    ' MyDouble is a Double.
MyByte = CByte(MyDouble)    ' MyByte contains 126.

Funkcja CCur

W tym przykładzie użyto tej CCur funkcji do przekonwertowania wyrażenia na wyrażenie 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

W tym przykładzie użyto tej CDate funkcji do przekonwertowania ciągu na Dateciąg znaków . Ogólnie rzecz biorąc, oznaczanie dat i godzin jako ciągów znaków, jak pokazano w tym przykładzie, nie jest zalecane. Zamiast tego należy używać literałów dat i godzin, takich jak #2/12/1969# i #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

W tym przykładzie użyto tej CDbl funkcji do przekonwertowania wyrażenia na wyrażenie Double

Dim MyCurr, MyDouble
MyCurr = CCur(234.456784)
' Convert result to a Double.
MyDouble = CDbl(MyCurr * 8.2 * 0.01)

CDec

W tym przykładzie użyto tej CDec funkcji do przekonwertowania wartości liczbowej na Decimal.

Dim MyDecimal, MyCurr
MyCurr = 10000000.0587    ' MyCurr is a Currency.
MyDecimal = CDec(MyCurr)     ' MyDecimal is a Decimal.

CInt, funkcja

W tym przykładzie użyto tej CInt funkcji do przekonwertowania wartości na Integer.

Dim MyDouble, MyInt
MyDouble = 2345.5678    ' MyDouble is a Double.
MyInt = CInt(MyDouble)    ' MyInt contains 2346.

Funkcja CLng

W tym przykładzie użyto tej CLng funkcji do przekonwertowania wartości na 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

W tym przykładzie użyto tej CSng funkcji do przekonwertowania wartości na 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, funkcja

W tym przykładzie użyto tej CStr funkcji do przekonwertowania wartości liczbowej na String.

Dim MyDouble, MyString
MyDouble = 437.324    ' MyDouble is a Double.
MyString = CStr(MyDouble)
' MyString contains "437.324".

CVar

W tym przykładzie użyto tej CVar funkcji do przekonwertowania wyrażenia na wyrażenie Variant

Dim MyInt, MyVar
MyInt = 4534    ' MyInt is an Integer.
MyVar = CVar(MyInt & "000")
' MyVar contains the string 4534000.