Eval-funktio

Käytetään kohteeseen
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Eval-funktion avulla voit arvioida lauseketta, jonka tuloksena on tekstimerkkijono tai numeroarvo.

Voit muodostaa merkkijonon ja siirtää sen sitten Eval-funktioon aivan kuin merkkijono olisi todellinen lauseke. Eval-funktio arvioi merkkijonolausekkeen ja palauttaa sen arvon. Esimerkiksi funktio Eval("1 + 1") palauttaa arvon 2.

Jos siirrät Eval-funktioon merkkijonon, joka sisältää funktion nimen, Eval-funktio palauttaa funktion palautusarvon. Esimerkiksi funktio Eval("Chr$(65)") palauttaa arvon "A".

Syntaksi

Eval(stringexpr)

Stringexpr-argumentti on lauseke, jonka arvoksi tulee aakkosnumeerinen tekstimerkkijono. merkkijonolauseke voi olla esimerkiksi funktio, joka palauttaa merkkijonon tai numeerisen arvon. Tai se voi olla viittaus lomakkeessa olevaan ohjausobjektiin. Stringexpr-argumentin on oltava merkkijono tai numeroarvo. se ei voi määrittää arvoa Microsoft Access -objekteiksi.

Huomautus

Seuraavissa esimerkeissä kerrotaan, kuinka tätä funktiota käytetään Visual Basic for Applications (VBA) -moduulissa. Jos haluat lisätietoja VBA:n käytöstä, valitse Sovelluskehittäjän opasHaku-kentän viereisestä luettelosta ja anna yksi tai useampi hakuehto hakukenttään.

Huomautus

Jos välität funktion nimen Eval-funktiolle , sinun on lisättävä sulkeet funktion nimen jälkeen stringexpr-argumenttiin . Esimerkki:

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

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

Debug.Print Eval("Date()")

Huomautuksia

Voit käyttää Eval-funktiota lasketussa ohjausobjektissa lomakkeessa tai raportissa, makrossa tai moduulissa. Eval-funktio palauttaa Variant-muuttujan, joka on joko merkkijono tai numeerinen tyyppi.

Argumentin stringexpr on oltava lauseke, joka on tallennettu merkkijonoon. Jos siirrät Eval-funktioon merkkijonon, joka ei sisällä numeerista lauseketta tai funktion nimeä vaan pelkästään yksinkertaisen tekstimerkkijonon, tapahtuu suorituksenaikainen virhe. Tuloksena on esimerkiksi Eval("Smith") virhe.

Voit käyttää Eval-funktiota määrittämään ohjausobjektin Value-ominaisuuteen tallennetun arvon. Seuraavassa esimerkissä siirretään merkkijono, joka sisältää täydellisen viittauksen ohjausobjektiin Eval-funktiossa. Se näyttää sitten ohjausobjektin nykyisen arvon valintaikkunassa.

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))

Voit Eval-funktion avulla käyttää lausekeoperaattoreita, jotka eivät ole tavallisesti käytettävissä Visual Basic for Applications (VBA) -moduulissa. Et voi esimerkiksi käyttää SQL-operaattoreita Between...And tai In suoraan koodissa, mutta voit käyttää niitä Eval-funktioon siirretyssä lausekkeessa.

Seuraavassa esimerkissä määritetään, onko Tilaukset-lomakkeen ShipRegion-ohjausobjektin arvo yksi useista määritetyistä tilan lyhenteistä. Jos kenttä sisältää yhden lyhenteistä, intState sen arvo on Tosi (–1). Huomaa, että puolilainausmerkkejä (') käytetään sisällyttämään merkkijono toiseen merkkijonoon.

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

Esimerkkejä kyselyistä

Lauseke Tulokset
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); Arvioi merkkijonon arvon ja laskee tuloksen. Tulos: 18.
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); Arvioi merkkijonoarvon, tunnistaa funktiot ja suorittaa ne. Tulos: nykyinen järjestelmän päivämäärä + nykyinen kuukausi, näkyy sarakkeessa "UusiPäivämäärä".

VBA-esimerkkejä

Seuraavassa esimerkissä oletetaan, että sinulla on 50 funktion, jotka on määritetty A1, A2 jne., sarja. Tässä esimerkissä käytetään Eval-funktiota kutsumaan sarjan kukin funktio.

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

Seuraavassa esimerkissä käynnistetään Click-tapahtuma aivan kuin käyttäjä olisi napsauttanut lomakkeen painiketta. Jos painikkeen OnClick-ominaisuuden arvon alussa on funktion nimeä osoittava yhtäläisyysmerkki (=), Eval-funktio kutsuu funktion, joka vastaa Click-tapahtuman käynnistämistä. Jos arvo ei ala yhtäläisyysmerkillä, arvon on nimettävä makro. DoCmd-ohjausobjektin RunMacro-menetelmä suorittaa nimetyn makron.

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