Applies ToAccess за Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Можете да използвате функцията Eval , за да оцените израз, което води до текстов низ или числова стойност.

Можете да създадете низ и след това да го предадете на функцията Eval , все едно низът е действителен израз. Функцията Eval изчислява низов израз и връща стойността й. Например Eval("1 + 1") връща 2.

Ако предадете на функцията Eval низ, който съдържа името на функция, функцията Eval връща върнатата от функцията стойност. Например Eval("Chr$(65)") връща "A".

Синтаксис

Eval ( stringexpr )

Аргументът stringexpr е израз, който се изчислява като буквено-цифров текстов низ. Например stringexpr може да бъде функция, която връща низ или числова стойност. Или може да бъде препратка към контрола във формуляр. Аргументът stringexpr трябва да се изчисли като низ или числова стойност; не може да оцени до Обект на Microsoft Access.

Забележка: Примерите по-долу илюстрират използването на тази функция във Visual Basic for Applications (VBA). За повече информация относно работата с VBA изберете Справочни материали за разработчици в падащия списък до Търсене и въведете един или няколко термина в полето за търсене.

Забележка: Ако подавате името на функция към функцията Eval , трябва да включите скоби след името на функцията в аргумента stringexpr . Например:

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

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

Debug.Print Eval("Date()")

Забележки

Можете да използвате функцията Eval в изчисляема контрола във формуляр или отчет или в макрос или модул. Функцията Eval връща стойност от тип Variant, която е низ или числов тип.

Аргументът stringexpr трябва да бъде израз, който е съхранен в низ. Ако предадете на функцията Eval низ, който не съдържа числов израз или име на функция, а само прост текстов низ, ще възникне грешка по време на изпълнение. Например Eval("Smith") води до грешка.

Можете да използвате функцията Eval , за да определите стойността, съхранена в свойството Стойност на контрола. Следващият пример предава низ, съдържащ пълна препратка към контрола към функцията 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... И или In директно във вашия код, но можете да ги използвате в израз, предаден на функцията Eval .

Следващият пример определя дали стойността на контролата ShipRegion във формуляр "Поръчки" е едно от няколкото указани съкращения в състоянието. Ако полето съдържа едно от съкращенията, intState ще бъде True (-1). Обърнете внимание, че използвате единични кавички ('), за да включите низ в друг низ.

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

Примери за заявки

Израз

Резултати

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())");

Оценява стойността на низа, идентифицира функциите и ги изпълнява. Резултат: текуща системна дата + текущ месец, показана в колоната "Нова_дата".

Примери за 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

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.