Applies ToAccess dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Funkcji Eval można użyć do oceny wyrażenie powodującego ciąg tekstowy lub wartość liczbową.

Można skonstruować ciąg, a następnie przekazać go do funkcji Eval , tak jakby był rzeczywistym wyrażeniem. Funkcja Eval oblicza wyrażenie tekstowe i zwraca jej wartość. Na przykład Eval("1 + 1") zwraca wartość 2.

Jeśli przejdziesz do funkcji Eval jako ciąg zawierający nazwę funkcji, funkcja Eval zwróci wartość zwracaną przez funkcję. Na przykład Eval("Chr$(65)") zwraca wartość "A".

Składnia

Eval ( stringexpr )

Argument wyrażenie_ciągu jest wyrażeniem obliczającym ciąg tekstowy alfanumeryczny. Na przykład wyrażenieexpr może być funkcją zwracającą ciąg lub wartość liczbową. Może też to być odwołanie do kontrolka w formularzu. Argument wyrażenie_ciągu musi być szacowany jako ciąg lub wartość liczbowa; nie można oszacować na obiekt programu Microsoft Access.

Uwaga: Poniższe przykłady przedstawiają sposób użycia tej funkcji w module języka Visual Basic for Applications (VBA). Aby uzyskać dodatkowe informacje na temat pracy w języku VBA, wybierz pozycję Dokumentacja dewelopera z listy rozwijanej obok przycisku Wyszukaj i wprowadź odpowiednie terminy w polu wyszukiwania.

Uwaga: W przypadku przekazywania nazwy funkcji do funkcji Eval należy dołączyć nawiasy po nazwie funkcji do argumentu stringexpr . Na przykład:

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

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

Debug.Print Eval("Date()")

Uwagi

Funkcji Eval można używać w kontrolka obliczeniowa w formularzu lub raporcie albo w makrze lub module. Funkcja Eval zwraca wartość typu wariant będącego ciągiem lub typem liczbowym.

Ciąg argumentu musi być wyrażeniem przechowywanym w ciągu. Jeśli przejdziesz do funkcji Eval jako ciąg, który nie zawiera wyrażenia liczbowego ani nazwy funkcji, ale tylko prosty ciąg tekstowy, występuje błąd czasu wykonania. Na przykład Eval("Smith") powoduje błąd.

Za pomocą funkcji Eval można określić wartość przechowywaną we właściwości Value kontrolki. W poniższym przykładzie jest przekazywany ciąg zawierający pełne odwołanie do kontrolki funkcji Eval . Następnie wyświetla bieżącą wartość kontrolki w oknie dialogowym.

Dim ctl As ControlDim strCtl As StringSet ctl = Forms!Employees!LastNamestrCtl = "Forms!Employees!LastName"MsgBox ("The current value of " & ctl.Name & _    " is " & Eval(strCtl))

Za pomocą funkcji Eval można uzyskać dostęp do operatorów wyrażeń, które zwykle nie są dostępne w module Visual Basic for Applications (VBA). Na przykład nie można używać operatorów SQL Between... Oraz lub In bezpośrednio w kodzie, ale można ich używać w wyrażeniu przekazanym do funkcji Eval .

Następny przykład określa, czy wartość kontrolki ShipRegion w formularzu Zamówienia jest jednym z kilku określonych skrótów stanu. Jeśli pole zawiera jeden ze skrótów, intState będzie mieć wartość Prawda (–1). Należy pamiętać, że do dołączania ciągu w innym ciągu używa się cudzysłowów pojedynczych (').

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

Przykłady zapytań

Expression

Wyniki

SELECT Eval("15+3") AS Wyr1 FROM ProductSales GROUP BY Eval("15+3");

Oblicza wartość ciągu i oblicza wynik. Wynik: 18.

SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date()))");

Oblicza wartość ciągu, identyfikuje funkcje i wykonuje je. Wynik: bieżąca data systemowa + bieżący miesiąc wyświetlana w kolumnie "NewDate".

Przykłady języka VBA

W poniższym przykładzie założono, że masz serię 50 funkcji zdefiniowanych jako A1, A2 i tak dalej. W tym przykładzie funkcja Eval jest używana do wywoływania każdej funkcji w serii.

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

Następny przykład wyzwala zdarzenie Click , tak jakby użytkownik kliknął przycisk w formularzu. Jeśli wartość właściwości OnClick przycisku zaczyna się od znaku równości (=), co oznacza, że jest to nazwa funkcji, funkcja Eval wywołuje funkcję, co odpowiada wyzwalaniu zdarzenia Click . Jeśli wartość nie zaczyna się od znaku równości, wartość musi nazywać makro. Metoda RunMacro obiektu DoCmd uruchamia nazwane makro.

Dim ctl As ControlDim varTemp As VariantSet ctl = Forms!Contacts!HelpButtonIf (Left(ctl.OnClick, 1) = "=") Then    varTemp = Eval(Mid(ctl.OnClick,2))Else    DoCmd.RunMacro ctl.OnClickEnd If

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.