Função Aval

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

Pode utilizar a função Aval para avaliar uma expressão que resulta numa cadeia de texto ou num valor numérico.

Pode construir uma cadeia e, em seguida, passá-la para a função Aval como se a cadeia fosse uma expressão real. A função Aval avalia a expressão de cadeia e devolve o respetivo valor. Por exemplo, Eval("1 + 1") devolve 2.

Se você passar para a função Eval uma cadeia de caracteres que contém o nome de uma função, a função Eval retorna o valor de retorno da função. Por exemplo, Eval("Chr$(65)") devolve "A".

Sintaxe

Eval(stringexpr)

O argumento stringexpr é uma expressão que é avaliada como uma cadeia de texto alfanumérica. Por exemplo, stringexpr pode ser uma função que retorna uma cadeia de caracteres ou um valor numérico. Ou pode ser uma referência a um controlo num formulário. O argumento stringexpr deve avaliar uma cadeia de caracteres ou valor numérico; ele não pode avaliar para um objeto do Microsoft Access.

Nota

Os exemplos seguintes demonstram a utilização desta função no módulo VBA (Visual Basic for Applications). Para obter mais informações sobre como trabalhar com o VBA, selecione Referência para Programadores na lista pendente junto a Procurar e introduza um ou mais termos na caixa de pesquisa.

Nota

Se estiver a passar o nome de uma função para a função Eval , tem de incluir parênteses após o nome da função no argumento stringexpr . Por exemplo:

' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")   

Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")

Debug.Print Eval("Date()")

Comentários

Pode utilizar a função Aval num controlo calculado num formulário ou relatório, ou numa macro ou módulo. A função Aval devolve uma Variante que seja uma cadeia ou um tipo numérico.

O argumento stringexpr deve ser uma expressão armazenada em uma cadeia de caracteres. Se você passar para a função Aval uma cadeia que não contém uma expressão numérica ou um nome de função, mas apenas uma cadeia de texto simples, ocorre um erro em tempo de execução. Por exemplo, Eval("Smith") resulta num erro.

Você pode usar a função Eval para determinar o valor armazenado na propriedade Value de um controle. O exemplo a seguir passa uma cadeia de caracteres que contém uma referência completa a um controle para a função Eval . Em seguida, apresenta o valor atual do controlo numa caixa de diálogo.

Dim ctl As Control
Dim strCtl As String
Set ctl = Forms!Employees!LastName
strCtl = "Forms!Employees!LastName"
MsgBox ("The current value of " & ctl.Name & _
    " is " & Eval(strCtl))

Pode utilizar a função Aval para aceder a operadores de expressão que normalmente não estão disponíveis num módulo Visual Basic for Applications (VBA). Por exemplo, não pode utilizar os operadores SQL entre... E ou In diretamente no seu código, mas você pode usá-los em uma expressão passada para a função Eval .

O exemplo seguinte determina se o valor de um controlo ShipRegion num formulário Encomendas é uma de várias abreviaturas de estado especificadas. Se o campo contiver uma das abreviaturas, intState será Verdadeiro (–1). Tenha em atenção que utiliza plicas (') para incluir uma cadeia dentro de outra cadeia.

Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
    & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

Exemplos de consulta

Expressão Resultados
SELECT Eval("15+3") COMO Expr1 FROM ProductSales GROUP BY Eval("15+3"); Avalia o valor da cadeia e calcula o resultado. Resultado: 18.
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); Avalia o valor da cadeia, identifica as funções e executa-as. Resultado: data atual do sistema + mês atual, apresentado na coluna "DataNova".

Exemplos de VBA

O seguinte exemplo assume que tem uma série de 50 funções definidas como A1, A2 e assim sucessivamente. Este exemplo utiliza a função Aval para chamar cada função da série.

Sub CallSeries()
    Dim intI As Integer
    For intI = 1 To 50
        Eval("A" & intI & "()")
    Next intI
End Sub

O próximo exemplo aciona um evento Click como se o utilizador tivesse clicado num botão num formulário. Se o valor da propriedade AoFazerClique do botão começar com um sinal de igual (=), significando que é o nome de uma função, a função Aval chamará a função, o que equivale a acionar o evento Click . Se o valor não começar com um sinal de igual, o valor tem de dar o nome a uma macro. O método RunMacro do objeto DoCmd executa a macro nomeada.

Dim ctl As Control
Dim varTemp As Variant
Set ctl = Forms!Contacts!HelpButton
If (Left(ctl.OnClick, 1) = "=") Then
    varTemp = Eval(Mid(ctl.OnClick,2))
Else
    DoCmd.RunMacro ctl.OnClick
End If