ส่งค่าข้ามฟอร์มใน Access โดยไม่ต้องประกาศตัวแปร

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

สำหรับใครที่พัฒนาโปรแกรมโดยใช้ Microsoft Access
น่าจะมีความจำเป็นในการส่งค่าจาก Control บนฟอร์มหนึ่ง ไปแสดงยังอีกฟอร์มหนึ่ง 

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

แต่สำหรับบทความนี้ มีวิธีที่ง่ายกว่านั้น เราสามารถส่งค่าตัวแปรจากฟอร์มหนึ่งไปยังอีกฟอร์มหนึ่ง
โดยที่ไม่ต้องใช้ Macro หรือ เขียน Code แต่อย่างใด  
 
ยกตัวอย่างเช่น การนำค่าชื่อ Employee ที่ login จากฟอร์ม FLogin ไปแสดงบนฟอร์ม Sales Reports Dialog

Dialog ของ sale และ report

จากรูป ขั้นตอนการทำงานเป็นดังนี้

หมายเลข 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

NamecboUserNamecboUserName
Row SourceSELECT Employees.EmployeeID, [LastName] & "," & [FirstName] AS [Full Name] FROM Employees;SELECT Employees.EmployeeID, [LastName] & "," & [FirstName] AS [Full Name] FROM Employees;
Row Source TypeTable/QueryTable/Query
Bound Column11
Column Count22
Column Widths0 cm0 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 กันดูค่ะ