การอ้างอิงไฟล์ภาพในตาราง MS Access

การนำภาพมาใช้ในโปรแกรม MS Access มักจะใช้การเก็บที่อยู่ หรือ path ของภาพนั้น ๆ ในตาราง แล้วนำมาอ้างถึงในฟอร์ม หรือ รายงาน ที่ต้องการให้แสดงภาพ

ปัญหาคือ เราต้องระบุ path ของไฟล์ภาพ โดยระบุชื่อไดรฟ์ และห้องที่เก็บ เช่น c:\mypic\tjk.jpg ซึ่งทำให้เมื่อมีการย้ายไฟล์ mdb จะทำให้ลิงค์ต่าง ๆ เสียไปหมด ครั้นจะอ้างอิงแบบ relational คือเอาห้อง mypic ไว้ในห้องที่เก็บฐานข้อมูลแล้วอ้างชื่อห้อง เช่น mypic\tjk.jpg ก็ไม่สามารถทำได้

การแก้ปัญหา คือการใช้ตัวแปรระบบของ MS Access ให้หาที่อยู่ของไฟล์ฐานข้อมูล แล้วนำมาต่อด้วยห้องและชื่อไฟล์ แต่ทั้งนี้ห้องที่เก็บไฟล์ต้องอยู่ในห้องเดียวกัน หรือ ห้องย่อยภายใต้ห้องที่เก็บฐานข้อมูล

ตัวแปรที่ว่าคือ currentproject.path

ถ้ากด Ctrl+G และพิมพ์
? currnetproject.path แล้วกด enter จะเห็นว่าโปรแกรมระบุชื่อ path ที่ฐานข้อมูลอยู่ เช่น แต่จะไม่มีเครื่องหมาย \ ต่อท้าย เช่น
c:\myDatabase (myDatabase คือชื่อห้อง หรือ folder ของไฟล์ฐานข้อมูลที่กำลังเปิดใช้งานอยู่)

ดังนั้น ในตารางที่เก็บที่อยู่ของไฟล์ควรขึ้นต้นด้วย เครื่องหมาย \ เช่น
\mypic\tjk

วิธีนำภาพมาแสดงมีดังนี้
1. ให้สร้างตารางและสร้างฟิลด์เก็บข้อมูลของภาพ
2. กรอก path ของภาพ และชื่อภาพ เช่น \mypic\tjk.jpg
3. สร้างฟอร์ม และนำฟิลด์ของตารางนั้นทั้งหมดมาวางบนฟอร์ม
4.ลาก image control มาวาง เมื่อถูกถามหาไฟล์ภาพ ให้ระบุภาพใดก็ได้เอาไว้ก่อน

4. ที่ Event On Current ของฟอร์ม ให้ระบุว่า
Private Sub Form_Current()
On Error Resume Next
Me.imageFrame.Picture = CurrentProject.Path & Me.imgPath
End Sub
– ImageFrame เป็นชื่อ image control
– imgPath เป็นชื่อฟิลด์ในตารางที่เก็บข้อมูล path และชื่อไฟล์ภาพ

เท่านี้ก็จะได้ภาพ และสามารถย้ายห้องฐานข้อมูลไปที่อื่น ๆ ได้ โดยที่ลิงค์ของภาพยังอยู่ครบถ้วนสมบูรณ์

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: