วันพุธที่ 17 กรกฎาคม พ.ศ. 2556

การแนบไฟล์ ใน Access 2010

เริ่มตั้งแต่ Access 2007 เราสามารถแนบไฟล์ เช่น ไฟล์ Word Excel ไฟล์ภาพ หรือแม้แต่ไฟล์ วิดีโอ ในฟิลด์ตารางของ Access ได้ เพราะมีการกำหนด ประเภทของข้อมูล (data type) เพิ่มเติม เป็นชนิด Attachment ซึ่งดีกว่าการใช้ OLE ในรุ่นก่อน ๆ มาก เพราะสะดวกมากกว่า ไฟล์เล็กกว่า

ไฟล์ที่เก็บเป็น Attachment เป็นไฟล์ต้นฉบับ เวลาเปิด จะใช้โปรแกรมภายนอกเปิด เช่น ถ้าเก็บไฟล์ docx เวลาเปิดไฟล์ จะเรียกโปรแกรม MS Word มาเปิด ซึ่งสามารถแก้ไข เพิ่มเติมได้ (แต่มีข้อแม้ว่า เมื่อแก้ไขแล้ว เวลากลับมาที่ MS Access ต้องบันทึกอีกครั้งหนึ่ง มิฉะนั้น สิ่งที่แก้ก็จะยังไม่ถูกจัดเก็บใน MS Access)

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

ไฟล์แนบสามารถมีได้ไม่จำกัดจำนวน จำกัดอยู่ที่ขนาดของไฟล์ แต่ละไฟล์ต้องมีขนาดไม่เกิน 256 Mb  รวมกันทั้งหมดแล้ว ไม่เกิน 2 GB (เท่ากับขนาดของ Access)

ไฟล์แนบสามารถจัดการได้ง่าย เช่น ลบ หรือเพิ่ม เพราะจะมีรูปลวดเสียบกระดาษ เราสามารถดับเบิ้ลคลิกเพื่อเปิดหน้าจอสำหรับเพิ่ม เปิด หรือลบ ได้โดยตรง
 
จากภาพ จะเห็นว่า Record ของ ณรงค์ มีการแนบไฟล์ที่เกี่ยวข้อง 2 ไฟล์คือ จะเห็นเป็นรูปลวดเสียบกระดาษ และมีเลข 2 อยู่ในวงเล็บ และชื่อฟิลด์จะเป็นรูปลวดเสียบกระดาษ ซึ่งแสดงว่าฟิลด์นี้ เป็นข้อมูลประเภท Attachment หรือไฟล์แนบ

เมื่อดับเบิ้ลคลิก ที่ลวดเสียบกระดาษ จะเปิดหน้าจอให้ เพิ่มเติม แก้ไข ลบออก หรือ เปิดดูโดยใช้โปรแกรมภายนอก เช่น เปิดไฟล์ jpg ด้วยโปรแกรมที่กำหนด หรือเปิดไฟล์ docx ด้วยโปรแกรม MS Word เป็นต้น

วิธีการสร้าง

การสร้างเหมือนกับการสร้างตารางทั่วไป เพียงกำหนดประเภทของฟิลด์ เป็น Attachment ก็ใช้ได้แล้ว

เราสามารถใช้งานบนฟอร์มหรือรายงานได้ โดยการอ้างอิงตารางนี้เป็นแหล่งข้อมูล ซึ่งสามารถสร้างได้หลายแบบ

รูปข้างล่างนี้ ไปที่แถบ สร้าง > ฟอร์ม > ออกแบบฟอร์ม แล้วเลือก รายการเขตข้อมูล และลากฟิลด์ที่ต้องการมาไว้บนฟอร์ม

เราสามารถสร้างรายงานที่มีการแนบไฟล์ในลักษณะเดียวกันกับการสร้างฟอร์ม โดยการอ้างอิงตารางที่มีฟิลด์ที่เป็น Attachment

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

ตารางที่มีฟิลด์ที่เป็น Attachment สามารถนำไปทำเป็น Query ได้เหมือนตารางทั่วไป และเมื่อนำ Query ไปแสดงใน ฟอร์ม หรือ รายงาน ก็จะมีไอคอนปรากฏ เหมือนกับเรียกตารางนั้น ๆ เช่นเดียวกัน

นอกจากนี้ เรายังสามารถใช้ VBA เพื่อให้เลือกไฟล์มาไว้ที่ฟิลด์ Attachment ได้อีกด้วย ดังโค้ดข้างล่างนี้

Private Sub Command7_Click()
On Error GoTo Err_AddImage
 Dim dbs As DAO.Database
 Dim rst As DAO.Recordset
 Dim rsChild As DAO.Recordset
 Set dbs = CurrentDb
 Set rst = dbs.OpenRecordset("SELECT * FROM Table1")


 rst.Edit

 Set rsChild = rst.Fields("attachmentTest").Value
    'Add a new attachment.
    filePath = "E:\tjk_illustrator\aongKot.jpg"
    rsChild.AddNew
    rsChild.Fields("FileData").LoadFromFile (filePath)
    rsChild.Update
    'Update the parent record
    rst.Update
Exit_AddImage:
 Set rsChild = Nothing
 Set rsParent = Nothing
 Exit Sub
Err_AddImage:
 If Err = 3820 Then
 MsgBox ("File already part of the multi-valued field!")
 Resume Next
 Else
 MsgBox "Some Other Error occured!" & Err.Number & Err.Description
 Resume Exit_AddImage
 End If
End Sub

วิธีการใช้
  1. สร้างตารางชื่อ Table1
  2. สร้างฟิลด์สำหรับเก็บไฟล์แนบ โดยตั้งชื่อฟิลด์ว่า AttachmentTest และกำหนดชนิดข้อมูลเป็น Attachment
  3. สร้างฟอร์ม
  4. สร้างปุ่ม (Command button) ชื่อ Command7
  5. ที่เหตุการณ์ เมื่อคลิก ของปุ่มนี้ ให้คัดลอกและวางโค้ดข้างต้น
  6. เปลี่ยนที่อยู่ของไฟล์แนบ ในส่วนของ filePath
  7. ชื่อ FileData เป็นชื่อสงวนของ Access สำหรับเก็บข้อมูลไบนารี่ ให้ใช้ชื่อนี้ ห้ามเปลี่ยน
  8. โค้ดนี้ ใช้แนบไฟล์ได้ 1 ไฟล์


2 ความคิดเห็น: