Funções de Conversão de Tipo

Aplica-se A
Access para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Cada função converte uma expressão num tipo de dados específico.

Sintaxe

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

O argumento necessário expression é qualquer cadeia ou expressão numérica.

Tipos de devolução

O nome da função determina o tipo de retorno, conforme mostrado na tabela seguinte:

Função Tipo de devolução Intervalo para expression argumento
CBool Boolean Uma expressão de cadeia ou expressão numérica válida.
CByte Byte 0 para 255.
CCur Currency -922,337,203,685,477.5808 para 922,337,203,685,477.5807.
CDate Date Uma expressão de data válida.
CDbl Double -1.79769313486231E308 para -4.94065645841247E-324 valores negativos; 4.94065645841247E-324 para 1.79769313486232E308 para valores positivos.
CDec Decimal +/-79,228,162,514,264,337,593,543,950,335 para números sem escala ou números sem casas decimais. Para números com 28 casas decimais, o intervalo é +/-7.9228162514264337593543950335. O menor número não zero possível é 0.0000000000000000000000000001.
CInt Integer -32,768 para 32,767; as frações são arredondadas.
CLng Long -2,147,483,648 para 2,147,483,647; as frações são arredondadas.
CSng Single -3.402823E38 para -1.401298E-45 valores negativos; 1.401298E-45 para 3.402823E38 para valores positivos.
CStr String O valor devolvido depende do expression argumento .
CVar Variant O mesmo intervalo que Double para valores numéricos. O mesmo intervalo String que para valores não numéricos.

Comentários

Se o expression transmitido para a função estiver fora do intervalo do tipo de dados para o qual está a converter, ocorre um erro.

Em geral, pode documentar o código utilizando funções de conversão de tipo de dados para mostrar que o resultado de uma operação deve utilizar um determinado tipo de dados em vez do tipo predefinido. Por exemplo, utilize CCur para forçar a aritmética de moeda nos casos em que a aritmética de precisão única, de precisão dupla ou de número inteiro ocorreria normalmente.

Utilize as funções de conversão do tipo de dados em vez de Val fornecer conversões com deteção de região de um tipo de dados para outro. Por exemplo, quando utiliza CCuro , o Access reconhece diferentes separadores decimais, milhares de separadores e opções de moeda com base na definição de região do computador.

Quando a parte fracionária é exatamente 0.5e CLngCInt arredonda-a sempre para o número par mais próximo. Por exemplo, 0.5 arredonda para 0e 1.5 arredonda para 2. CInt e CLng diferem das Fix funções e Int , que truncam a parte fracionária de um número em vez de arredondar. Fix e Int também devolve sempre um valor do mesmo tipo que transmite.

Utilize a IsDate função para determinar se date pode ser convertida numa data ou hora. CDate reconhece literais de data e literais de tempo, bem como alguns números que se enquadram no intervalo de datas aceitáveis. Quando converte um número numa data, toda a parte do número torna-se uma data. Qualquer parte fracionária torna-se uma hora do dia que começa à meia-noite.

CDate reconhece formatos de data de acordo com a definição de região do sistema. O Access poderá não determinar a ordem correta do dia, mês e ano se fornecer um formato diferente de uma das definições de data reconhecidas. Além disso, não reconhece um formato de data longo se também contiver a cadeia do dia da semana.

A CVDate função também está disponível para compatibilidade com versões anteriores do Visual Basic. A sintaxe de CVDate é idêntica à CDate função. No entanto, CVDate devolve um Variant cujo subtipo é Date em vez de um tipo real Date . Uma vez que o Access inclui agora um tipo intrínseco Date , já não precisa de CVDate. Pode obter o mesmo efeito ao converter uma expressão Date numa e, em seguida, atribuí-la a um Variant. Esta técnica é consistente com a conversão de outros tipos intrínsecos para os subtipos equivalentes Variant .

Nota

A CDec função não devolve um tipo de dados discreto. Em vez disso, devolve sempre um Variant cujo valor foi convertido num Decimal subtipo.

Exemplos de consulta

Expressão Resultados
SELECT SalePrice, FinalPrice, CBool(SalePrice > FinalPrice) AS Expr1 FROM productSales; Devolve SalePrice e FinalPricee avalia se SalePrice é maior que FinalPrice. Devolve -1 se for verdadeiro e 0 se for falso.
SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales; Devolve ProductID, converte os valores no campo Byteem Quantity e apresenta-os na Expr1 coluna.
SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; Devolve ProductID, converte os valores no campo Dateem DateofSale e apresenta-os na Expr1 coluna.
SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; Devolve ProductID, converte os valores no campo Doubleem Discount e apresenta-os na Expr1 coluna.
SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; Devolve ProductID, converte os valores no campo Integerem Discount e apresenta-os na Expr1 coluna.
SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; Devolve ProductID, converte os valores no campo Longem Discount e apresenta-os na Expr1 coluna.
SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; Devolve ProductID, converte os valores no campo Singleem Discount e apresenta-os na Expr1 coluna.
SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; Devolve ProductID, converte os valores no campo Stringem Discount e apresenta-os na Expr1 coluna.
SELECT ProductID, CVar(Discount) AS Expr1 FROM productSales; Devolve ProductID, converte valores numéricos Discount em Doublee converte valores não numéricos em String.

Exemplos de VBA

Nota

Os exemplos seguintes mostram como utilizar esta função num módulo Visual Basic for Applications (VBA). Para obter mais informações sobre como trabalhar com o VBA, veja Access VBA reference (Referência do VBA do Access).

Função CBool

Este exemplo utiliza a CBool função para converter uma expressão num Boolean. Se a expressão for avaliada como um valor diferente de zero, CBool devolve True; caso contrário, devolve 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.

Função CByte

Este exemplo utiliza a CByte função para converter uma expressão num Byte.

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

Função CCur

Este exemplo utiliza a CCur função para converter uma expressão num 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).

Função CDate

Este exemplo utiliza a CDate função para converter uma cadeia num Date. Em geral, as datas e horas de hard-coding como cadeias de carateres, conforme mostrado neste exemplo, não são recomendadas. Utilize literais de data e literais de hora, como #2/12/1969# e #4:45:23 PM#, em vez disso.

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)

Função CDBL

Este exemplo utiliza a CDbl função para converter uma expressão num Double.

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

Função CDec

Este exemplo utiliza a CDec função para converter um valor numérico num Decimal.

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

Função CInt

Este exemplo utiliza a CInt função para converter um valor num Integer.

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

Função CLng

Este exemplo utiliza a CLng função para converter um valor num 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.

Função CSng

Este exemplo utiliza a CSng função para converter um valor num 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.

Função CStr

Este exemplo utiliza a CStr função para converter um valor numérico num String.

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

Função CVar

Este exemplo utiliza a CVar função para converter uma expressão num Variant.

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