Online Reference |
Microsoft Reference |
|
|
Eval FunctionAccess Function, ส่งออกค่าเป็นประเภทข้อมูล Variant ที่มีผลลัพธ์เป็นได้ทั้งข้อความและตัวเลข จากการหาค่า expression เช่น การส่งค่าข้อความ(String) ให้ฟังก์ชัน Eval เพื่อทำการคำนวณและส่งผลลัพธ์ออกมา Eval(1+1) ค่าส่งออก คือ 2 Eval(Chr$(65)) ค่าส่งออก คือ A ไวยากรณ์
อากิวเมนต์ stringexpr เป็น expression ที่ใช้หาค่าข้อความที่เป็นตัวเลข เช่น stringexpr สามารถเป็นฟังก์ชันที่ส่งค่าเป็นข้อความหรือตัวเลข หรือการอ้างอิงตัว control บนฟอร์ม โดย stringexpr หาค่าเป็นข้อความหรือค่าตัวเลข แต่ไม่สามารถหาค่าอ๊อบเจคของ Microsoft Access หมายเหตุ ถ้าต้องการส่งผ่านชื่อฟังก์ชันให้ฟังก์ชัน Eval ต้องใส่เครื่องหมายวงเล็บต่อท้ายชื่อฟังก์ชันในอากิวเมนต์ stringexpr เช่น Debug.Print Eval("ShowNames()") ลักษณะการประยุกต์ฟังก์ชัน 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 ฟังก์ชัน Eval สามารถใช้กับตัวดำเนินการ (operator) แบบ expression ซึ่งไม่มีให้ใน Visual Basic เช่น ตัวดำเนินการ SQL คือ Between And หรือ In ไม่สามารถใช้โดยตรงในชุดคำสั่ง แต่ใช้ได้โดยการกำหนดใน expression ที่ส่งผ่านให้ฟังก์ชัน Eval Dim intState As Integer ดูเพิ่มเติมฟังก์ชัน Choose, ฟังก์ชัน IIf, ฟังก์ชัน Switch ตัวอย่างตัวอย่างการใช้ฟังก์ชัน Eval โดยสมมติว่ามีลำดับฟังก์ชัน 50 ฟังก์ชัน ซึ่งกำหนดเป็น A1, A2 และต่อไป ให้ฟังก์ชัน Eval เรียกแต่ละฟังก์ชันตามลำดับ Sub CallSeries() Dim intI As Integer For intI = 1 to 50 End Sub ตัวอย่างต่อมาเป็นการทำงานของ Click event เมื่อมีการคลิกปุ่มบนฟอร์ม ถ้าปุ่มมีค่าคุณสมบัติที่เริ่มต้นด้วยเครื่องหมายเท่ากับ (=) ซึ่งเป็นสัญลักษณ์ของชื่อฟังก์ชัน ซึ่งฟังก์ชัน Eval จะเรียกฟังก์ชันโดยเทียบได้กับการทำงานของ Click event ถ้าค่าไม่นำหน้าด้วยเครื่องหมายเท่ากับแสดงว่าเป็นมาโคร ให้ใช้เมธอด Docmd เรียกใช้มาโคร Dim ctl As Control, varTemp As Variant If (Left(ctl.OnClick, 1) = "=") Then
|
||||