Applies ToAccess για Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση Eval για να αξιολογήσετε μια παράσταση που έχει ως αποτέλεσμα μια συμβολοσειρά κειμένου ή μια αριθμητική τιμή.

Μπορείτε να δημιουργήσετε μια συμβολοσειρά και, στη συνέχεια, να τη μεταβιβάσετε στη συνάρτηση Eval σαν να ήταν μια πραγματική παράσταση. Η συνάρτηση Eval αξιολογεί την παράσταση συμβολοσειράς και επιστρέφει την τιμή της. Για παράδειγμα, Eval("1 + 1") επιστρέφει την τιμή 2.

Εάν μεταβιβάσετε στη συνάρτηση Eval μια συμβολοσειρά που περιέχει το όνομα μιας συνάρτησης, η συνάρτηση Eval επιστρέφει την τιμή επιστροφής της συνάρτησης. Για παράδειγμα, Eval("Chr$(65)") επιστρέφει την τιμή "Α".

Σύνταξη

Eval ( συμβολοσειρά_παράστασης )

Το όρισμα συμβολοσειρά_συμβολοσειράς είναι μια παράσταση που επιστρέφει μια αλφαριθμητική συμβολοσειρά κειμένου. Για παράδειγμα, η παράσταση_συμβολοσειράς μπορεί να είναι μια συνάρτηση που επιστρέφει μια συμβολοσειρά ή μια αριθμητική τιμή. Ή μπορεί να είναι μια αναφορά σε ένα στοιχείο ελέγχου σε μια φόρμα. Το όρισμα παράσταση_συμβολοσειράς πρέπει να είναι συμβολοσειρά ή αριθμητική τιμή. δεν μπορεί να υπολογιστεί σε αντικείμενο Microsoft Access.

Σημείωση: Παραδείγματα που ακολουθούν δείχνουν τη χρήση αυτής της συνάρτησης σε μια λειτουργική μονάδα Visual Basic for Applications (VBA). Για περισσότερες πληροφορίες σχετικά με την εργασία με τη VBA, επιλέξτε Αναφορά προγραμματιστών στην αναπτυσσόμενη λίστα δίπλα στην Αναζήτηση και πληκτρολογήστε έναν ή περισσότερους όρους στο πλαίσιο αναζήτησης.

Σημείωση: Εάν μεταβιβάζετε το όνομα μιας συνάρτησης στη συνάρτηση Eval , πρέπει να συμπεριλάβετε παρενθέσεις μετά το όνομα της συνάρτησης στο όρισμα συμβολοσειρά_συμβολοσειράς . Για παράδειγμα:

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

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

Debug.Print Eval("Date()")

Παρατηρήσεις

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση Eval σε μια στοιχείο ελέγχου υπολογισμού σε μια φόρμα ή αναφορά ή σε μια μακροεντολή ή λειτουργική μονάδα. Η συνάρτηση Eval επιστρέφει μια Μεταβλητή που είναι μια συμβολοσειρά ή ένας αριθμητικός τύπος.

Η συμβολοσειρά ορίσματος πρέπει να είναι μια παράσταση που είναι αποθηκευμένη σε μια συμβολοσειρά. Εάν μεταβιβάσετε στη συνάρτηση Eval μια συμβολοσειρά που δεν περιέχει μια αριθμητική παράσταση ή ένα όνομα συνάρτησης, αλλά μόνο μια απλή συμβολοσειρά κειμένου, προκύπτει μια σφάλμα χρόνου εκτέλεσης. Για παράδειγμα, Eval("Smith") οδηγεί σε σφάλμα.

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση Eval για να προσδιορίσετε την τιμή που είναι αποθηκευμένη στην ιδιότητα Value ενός στοιχείου ελέγχου. Το παρακάτω παράδειγμα μεταβιβάζει μια συμβολοσειρά που περιέχει μια πλήρη αναφορά σε ένα στοιχείο ελέγχου στη συνάρτηση Eval . Στη συνέχεια, εμφανίζει την τρέχουσα τιμή του στοιχείου ελέγχου σε ένα παράθυρο διαλόγου.

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

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση Eval για να αποκτήσετε πρόσβαση σε τελεστές παραστάσεων που δεν είναι συνήθως διαθέσιμοι σε μια λειτουργική μονάδα Visual Basic for Applications (VBA). Για παράδειγμα, δεν μπορείτε να χρησιμοποιήσετε τους τελεστές SQL Between... Και ή Απευθείας στον κείμενό σας, αλλά μπορείτε να τα χρησιμοποιήσετε σε μια παράσταση που μεταβιβάζεται στη συνάρτηση Eval .

Το επόμενο παράδειγμα καθορίζει εάν η τιμή ενός στοιχείου ελέγχου "Περιοχή_αποστολής" σε μια φόρμα "Παραγγελίες" είναι μία από τις πολλές συντομεύσεις συγκεκριμένης κατάστασης. Εάν το πεδίο περιέχει μία από τις συντομεύσεις, intState θα είναι Αληθές (–1). Σημειώστε ότι χρησιμοποιείτε μονά εισαγωγικά (') για να συμπεριλάβετε μια συμβολοσειρά μέσα σε μια άλλη συμβολοσειρά.

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

Παραδείγματα ερωτημάτων

Expression

Αποτελέσματα

SELECT Eval("15+3") AS Παράστ1 FROM ProductSales GROUP BY Eval("15+3");

Αξιολογεί την τιμή της συμβολοσειράς και υπολογίζει το αποτέλεσμα. Αποτέλεσμα: 18.

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

Αξιολογεί την τιμή συμβολοσειράς, προσδιορίζει τις συναρτήσεις και τις εκτελεί. Αποτέλεσμα: τρέχουσα ημερομηνία συστήματος + τρέχων μήνας, που εμφανίζεται στη στήλη "NewDate".

Παραδείγματα VBA

Το παρακάτω παράδειγμα προϋποθέτει ότι έχετε μια σειρά από 50 συναρτήσεις που έχουν οριστεί ως A1, A2 και ούτω καθεξής. Αυτό το παράδειγμα χρησιμοποιεί τη συνάρτηση Eval για να καλέσει κάθε συνάρτηση της σειράς.

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

Το επόμενο παράδειγμα ενεργοποιεί ένα συμβάν Click σαν ο χρήστης να είχε κάνει κλικ σε ένα κουμπί σε μια φόρμα. Εάν η τιμή της ιδιότητας OnClick του κουμπιού αρχίζει με το σύμβολο ίσον (=), που σημαίνει ότι είναι το όνομα μιας συνάρτησης, η συνάρτηση Eval καλεί τη συνάρτηση, η οποία είναι ισοδύναμη με την ενεργοποίηση του συμβάντος Click . Εάν η τιμή δεν ξεκινά με το σύμβολο ίσον, τότε η τιμή πρέπει να ονομάσει μια μακροεντολή. Η μέθοδος RunMacro του αντικειμένου DoCmd εκτελεί την καθορισμένη μακροεντολή.

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

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.

Οι κοινότητες σάς βοηθούν να κάνετε και να απαντάτε σε ερωτήσεις, να δίνετε σχόλια και να ακούτε από ειδικούς με πλούσια γνώση.