การส่งค่าจากฟอร์มหนึ่งไปยังอีกฟอร์มหนึ่ง โดยที่ไม่ต้องประกาศตัวแปร ใน Microsoft Access

สำหรับใครที่พัฒนาโปรแกรมโดยใช้ Microsoft Access
น่าจะมีความจำเป็นในการส่งค่าจาก Control บนฟอร์มหนึ่ง ไปแสดงยังอีกฟอร์มหนึ่ง
บางท่านอาจใช้เก็บค่าตัวแปรใน Action SetTempVars ซึ่งอยู่ในชุดคำสั่ง Macro Access หรือ
บางท่านอาจใช้วิธีเขียน Code ประกาศตัวแปรรับค่าแบบ Public เพื่อให้รู้จักค่าตัวแปรข้ามฟอร์มได้
แต่สำหรับบทความนี้ มีวิธีที่ง่ายกว่านั้น เราสามารถส่งค่าตัวแปรจากฟอร์มหนึ่งไปยังอีกฟอร์มหนึ่ง
โดยที่ไม่ต้องใช้ Macro หรือ เขียน Code แต่อย่างใด
ยกตัวอย่างเช่น การนำค่าชื่อ Employee ที่ login จากฟอร์ม FLogin ไปแสดงบนฟอร์ม Sales Reports Dialog

จากรูป ขั้นตอนการทำงานเป็นดังนี้
หมายเลข 1 ใส่ Employee และ Password (ฟอร์ม FLogIn)
หมายเลข 2 กดปุ่ม OK (ฟอร์ม FLogIn) เพื่อสั่งให้เปิดฟอร์ม Sales Reports Dialog
หมายเลข 3 จะเห็นว่า Employee จาก FLogin นั้น ได้แสดงที่ฟอร์ม Sales Reports Dialog ด้วย
สำหรับตัวอย่างนี้ Employee ที่ FLogin นั้น เป็น ComboBox ซึ่งมีการกำหนด Property ของ Control เรียบร้อยแล้ว
เพื่อให้แสดงการ Lookup ข้อมูล FirstName และ LastName จาก Table Employees
และ ก็ต้องมี ComboBox ที่กำหนดค่าเช่นเดียวกันอยู่บนฟอร์ม Sales Reports Dialog ด้วย
Property |
ฟอร์ม FLogin |
ฟอร์ม Sales Reports Dialog |
Name | cboUserName | cboUserName |
Row Source | SELECT Employees.EmployeeID, [LastName] & "," & [FirstName] AS [Full Name] FROM Employees; | SELECT Employees.EmployeeID, [LastName] & "," & [FirstName] AS [Full Name] FROM Employees; |
Row Source Type | Table/Query | Table/Query |
Bound Column | 1 | 1 |
Column Count | 2 | 2 |
Column Widths | 0 cm | 0 cm |
จะเห็นว่าที่ฟอร์ม FLogin และ Sales Reports Dialog นั้น ComboBox มีชื่อเหมือนกัน คือ cboUserName
ทั้งนี้ ไม่จำเป็นต้องเหมือนกันก็ได้ค่ะ
ขั้นตอนต่อมาหลังจากเตรียม Control ComboBox ที่กำหนด Property ให้เหมือนกันเรียบร้อยแล้ว
สิ่งที่ต้องทำต่อมา คือ การกำหนดที่ Property Default Value ของ ComboBox
ที่อยู่บนฟอร์ม Sales Reports Dialog เป็น = Forms("flogin").[cboUserName]
ซึ่ง รูปแบบของการเขียนคือ = Forms("ชื่อฟอร์ม").[ชื่อคอนโทรล]
จาก = Forms("flogin").[cboUserName] หมายถึง ค่าของ cboUserName ที่อยู่บนฟอร์ม Flogin ค่ะ
ย้ำอีกครั้งค่ะ ว่า ชื่อฟอร์ม คือ flogin ไม่ใช่ Sales Reports Dialog
เนื่องจากเราจะนำค่าจาก ComboBox จาก flogin มาแสดงที่ ComboBox บนฟอร์ม Sales Reports Dialog ค่ะ
เพื่อให้เห็นภาพมากขึ้น
ลองดูรูปเป็นการกำหนด Property Default Value ของ Combobox ที่อยู่บนฟอร์ม Sales Reports Dialog
จะเห็นว่า Property Default Value นั้น อยู่ในส่วนของป้าย Data นะคะ

จากตัวอย่างนั้น Control นั้น เป็น ComboBox
แต่ในความเป็นจริงแล้ว เราสามารถนำค่าจาก Text Box มาแสดงได้เช่นกันค่ะ
อย่างไรทดลองใช้วิธีนี้ดู แทนวิธีการเก็บค่าตัวแปรใน Macro หรือ ใน Module กันดูค่ะ