Online Reference

Home

Microsoft Reference
Knowledge Developer Database Internet Resource Forum
Access
Database Function
ดาวน์โหลดคู่มือ

Eval Function

Access Function, ส่งออกค่าเป็นประเภทข้อมูล Variant ที่มีผลลัพธ์เป็นได้ทั้งข้อความและตัวเลข จากการหาค่า expression

เช่น การส่งค่าข้อความ(String) ให้ฟังก์ชัน Eval เพื่อทำการคำนวณและส่งผลลัพธ์ออกมา

Eval(“1+1”) ค่าส่งออก คือ 2
ถ้าข้อความที่ส่งให้ฟังก์ชัน Eval เป็นชื่อของฟังก์ชัน ค่าที่ส่งออกมาเป็นค่าจากฟังก์ชันนั้น

Eval(“Chr$(65)”) ค่าส่งออก คือ “A”

ไวยากรณ์

Eval(stringexpr )

อากิวเมนต์ stringexpr เป็น expression ที่ใช้หาค่าข้อความที่เป็นตัวเลข เช่น stringexpr สามารถเป็นฟังก์ชันที่ส่งค่าเป็นข้อความหรือตัวเลข หรือการอ้างอิงตัว control บนฟอร์ม โดย stringexpr หาค่าเป็นข้อความหรือค่าตัวเลข แต่ไม่สามารถหาค่าอ๊อบเจคของ Microsoft Access

หมายเหตุ ถ้าต้องการส่งผ่านชื่อฟังก์ชันให้ฟังก์ชัน Eval ต้องใส่เครื่องหมายวงเล็บต่อท้ายชื่อฟังก์ชันในอากิวเมนต์ stringexpr เช่น

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

ลักษณะการประยุกต์

ฟังก์ชัน Eval สามารถใช้ในการคำนวณตัว control บนฟอร์มหรือรายงาน และในมาโคร หรือโมดูล ฟังก์ชัน Eval ส่งออกค่าเป็น Variant ซึ่งเป็นได้ทั้งข้อความหรือตัวเลข

อากิวเมนต์ stringexpr ต้องเป็น expression ที่เก็บในข้อความ ถ้าข้อความที่ส่งผ่านให้ฟังก์ชัน Eval ไม่ได้เป็นข้อความที่เก็บค่า expression ของตัวเลข หรือชื่อฟังก์ชัน แต่เป็นข้อความปกติ จะเกิดความผิดพลาด runtime-error เช่น Eval(“Smith”) ค่าส่งออกเป็นความผิดพลาด

ฟังก์ชัน Eval นำไปใช้หาค่าที่เก็บไว้ในคุณสมบัติ Value ของตัว control ตัวอย่างต่อไปเป็นการแสดงการส่งผ่านข้อความที่เก็บการอ้างอิงตัว control ไปยังฟังก์ชัน Eval แล้วแสดงค่าตัว control ด้วย dialog box

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

ฟังก์ชัน Eval สามารถใช้กับตัวดำเนินการ (operator) แบบ expression ซึ่งไม่มีให้ใน Visual Basic เช่น ตัวดำเนินการ SQL คือ Between…And หรือ In ไม่สามารถใช้โดยตรงในชุดคำสั่ง แต่ใช้ได้โดยการกำหนดใน expression ที่ส่งผ่านให้ฟังก์ชัน Eval

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

ดูเพิ่มเติม

ฟังก์ชัน Choose, ฟังก์ชัน IIf, ฟังก์ชัน Switch

ตัวอย่าง

ตัวอย่างการใช้ฟังก์ชัน Eval โดยสมมติว่ามีลำดับฟังก์ชัน 50 ฟังก์ชัน ซึ่งกำหนดเป็น A1, A2 และต่อไป ให้ฟังก์ชัน Eval เรียกแต่ละฟังก์ชันตามลำดับ

Sub CallSeries()

  Dim intI As Integer

  For intI = 1 to 50
    Eval("A" & intI & "()")
  Next intI

End Sub

ตัวอย่างต่อมาเป็นการทำงานของ Click event เมื่อมีการคลิกปุ่มบนฟอร์ม ถ้าปุ่มมีค่าคุณสมบัติที่เริ่มต้นด้วยเครื่องหมายเท่ากับ (=) ซึ่งเป็นสัญลักษณ์ของชื่อฟังก์ชัน ซึ่งฟังก์ชัน Eval จะเรียกฟังก์ชันโดยเทียบได้กับการทำงานของ Click event ถ้าค่าไม่นำหน้าด้วยเครื่องหมายเท่ากับแสดงว่าเป็นมาโคร ให้ใช้เมธอด Docmd เรียกใช้มาโคร

Dim ctl As Control, 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