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)

Wymagany argument to dowolne expression wyrażenie ciągu lub wyrażenia liczbowego.

Typy zwrotów

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

Funkcja Typ zwrotu 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 dla -4.94065645841247E-324 wartości ujemnych; 4.94065645841247E-324 do 1.79769313486232E308 wartości dodatnich.
CDec Decimal +/-79,228,162,514,264,337,593,543,950,335 dla liczb o zerowej skali lub liczb bez miejsc dziesiętnych. W przypadku liczb z miejscami 28 dziesiętnym zakres to +/-7.9228162514264337593543950335. Najmniejsza możliwa liczba niezerowe 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 dla -1.401298E-45 wartości ujemnych; 1.401298E-45 do 3.402823E38 wartości dodatnich.
CStr String Zwracana wartość zależy od argumentu expression .
CVar Variant Ten sam zakres co Double dla wartości liczbowych. Ten sam zakres co String dla wartości nieliczbowych.

Spostrzeżenia

Jeśli przekazano expression do funkcji poza zakresem typu danych, na który jest konwertowany, występuje błąd.

Na ogół 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. Na przykład użycie wymusza CCur arytmetyczne waluty w przypadkach, gdy pojedyncza precyzja, podwójna precyzja lub arytmetyka liczb całkowitych normalnie występują.

Użyj funkcji konwersji typów danych, zamiast Val udostępniać konwersje oparte na ustawieniach regionalnych z jednego typu danych na inny. Jeśli na przykład używasz programu CCur, program Access rozpoznaje różne separatory dziesiętne, separatory tysięcy i opcje walut na podstawie ustawień regionalnych komputera.

Gdy część ułamkowa jest dokładnie 0.5, CInt i CLng zawsze zaokrągla ją do najbliższej liczby parzystej. Na przykład zaokrągla 0.5 do 0, a następnie zaokrągla 1.5 do 2. CInt i CLng różnią się od Fix funkcji Int , które obcinają część ułamkową liczby zamiast jej zaokrąglania. Fix i Int zawsze zwraca wartość tego samego typu, który jest przekazywany.

Funkcja służy do określania IsDate , czy date można przekonwertować ją na datę lub godzinę. CDate rozpoznaje literały dat i literały godzin, a także niektóre liczby mieszczące się w zakresie dopuszczalnych dat. Podczas konwertowania liczby na datę część pełna staje się datą. Każda część ułamkowa staje się porą dnia rozpoczynającą się o północy.

CDate rozpoznaje formaty dat zgodnie z ustawieniami regionalnymi systemu. Program Access może nie ustalić prawidłowej kolejności dni, miesięcy i lat, jeśli podasz format inny niż jedno z rozpoznanych ustawień daty. Ponadto nie rozpoznaje formatu daty długiej, jeśli zawiera również ciąg dnia tygodnia.

Ta funkcja jest również dostępna CVDate w celu zapewnienia zgodności z wcześniejszymi wersjami programu Visual Basic. Składnia CVDate funkcji jest identyczna z funkcją CDate . Zwraca jednak podtyp, CVDateVariant którego nie jest Date typem rzeczywistym Date . Ponieważ program Access zawiera teraz typ wewnętrzny Date , nie jest już potrzebny CVDate. Ten sam efekt można uzyskać, konwertując wyrażenie na Date wyrażenie, a następnie przypisując je do Variant. Technika ta jest zgodna z konwersją innych typów wewnętrznych na ich równoważne Variant podtypy.

Uwaga

Funkcja CDec nie zwraca oddzielnego typu danych. Zamiast tego zawsze zwraca Variant wartość, której wartość została przekonwertowana na Decimal podtyp.

Przykłady zapytań

Expression Wyniki
SELECT SalePrice, FinalPrice, CBool(SalePrice > FinalPrice) AS Expr1 FROM productSales; Zwraca SalePrice i FinalPricesprawdza, czy SalePrice wartość jest większa niż FinalPrice. Zwraca -1 wartość, jeśli jest prawdziwa, a 0 jeśli jest fałszywa.
SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w polu na QuantityByte, i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w polu na DateofSaleDate, i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w polu na DiscountDouble, i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w polu na DiscountInteger, i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w polu na DiscountLong, i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w polu na DiscountSingle, i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; Zwraca ProductIDwartość , konwertuje wartości w polu na DiscountString, i wyświetla je w kolumnie Expr1 .
SELECT ProductID, CVar(Discount) AS Expr1 FROM productSales; Zwraca ProductID, konwertuje wartości liczbowe Discount na Double, i konwertuje wartości nieliczbowe na String.

Przykłady języka VBA

Uwaga

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

CBool

W tym przykładzie użyto CBool tej funkcji do przekonwertowania wyrażenia na Booleanwyrażenie . Jeśli wyrażenie ma wartość niezerową, CBool zwraca Truewartość ; w przeciwnym razie zwraca Falsewartość .

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 CByte tej funkcji do przekonwertowania wyrażenia na Bytewyrażenie .

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

CCur

W tym przykładzie użyto CCur tej funkcji do przekonwertowania wyrażenia na Currencywyrażenie .

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 CDate tej funkcji do przekonwertowania ciągu na Dateciąg . Ogólnie rzecz biorąc, daty i godziny twardego kodowania jako ciągi, jak pokazano w tym przykładzie, nie są zalecane. Zamiast tego należy używać literałów dat i literałów godziny, 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 CDbl tej funkcji do przekonwertowania wyrażenia na Doublewyrażenie .

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

CDec

W tym przykładzie funkcja jest używana CDec do konwertowania wartości liczbowej na wartość Decimal.

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

CInt

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

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

CLng

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

W tym przykładzie funkcja jest używana CStr do konwertowania wartości liczbowej na wartość 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 CVar tej funkcji do przekonwertowania wyrażenia na Variantwyrażenie .

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