UGETPROJECT.COM › Forums › ถามตอบปัญหา MS Access › การนำไฟล์รูปภาพมาใส่ในฟอร์ม โดยการลิงห์ จะทำยังไงครับ
- This topic has 2 replies, 2 voices, and was last updated 9 years, 5 months ago by Pirin Phon.
-
AuthorPosts
-
07/06/2015 at 1:02 AM #518Pirin PhonParticipant
ผมต้องการการนำไฟล์รูปภาพ ที่อยู่ใน โฟล์เดอร์ มาใส่ในฟอร์ม โดยการลิงห์ จะทำยังไงครับ ไม่ใช้วิธีการแนบรูปภาพครับ เพราะกลัวฐานข้อมูลใหญ่
07/06/2015 at 9:26 AM #519adminKeymasterผมเคยทำอยู่ครับ แบบไม่ได้แนบไฟล์เข้าไปใน access ลองเอาแนวคิดที่ผมเคยทำ ไปปรับใช้ดูนะครับ ที่สำคัญคือต้องมีความรู้ความเข้าใจเรื่อง VBA ระดับที่สามารถแกะโค๊ตได้เลยนะครับ เพราะต้องใช้ VBA แน่ ๆ ซึ่งถ้าไม่เข้าใจก็ทำไม่ได้แน่ ๆ เหมือนกันครับเพราะค่อนข้างจะยากครับ
1 ตารางที่เราจะเก็บไฟล์นั้น ให้เก็บแต่ path โดย ประเภทของข้อมูลที่เก็บใช้เป็น text ธรรมดาครับ
2 สร้างฟอร์มเพิ่มไฟล์ โดย เอาฟิล์ด ที่เราจะเก็บ path ออกมา เป็น textbox แล้วเลือก perperty hyper text เป็น yes ด้วยครับ
3 ที่ Control source เขียนสูตร
=IIf(IsNull([filepath]),"","ดูไฟล์")
อธิบายคือ ถ้าช่องที่เราทำเป็นยังไม่มีการเก็บ path เราจะให้เป็นช่องว่างไว้ แต่ถ้ามีการเก็บ path ไว้แล้ว ให้มีลิงค์เปิดดูไฟล์ได้4 ที่ event on click ของ textbox ให้ใส่สูตรเพื่อ เช็คว่า มีการใส่ path หรือยัง ถ้าใส่แล้ว ให้เปิดไฟล์ขึ้นมา แต่ถ้ายังไม่ได้ใส่ ให้เลือกไฟล์ เพื่อก๊อปปี้ไฟล์มาไว้ใน folder ที่เรากำหนด แล้วก็เก็บ path ไว้เรียกใช้ภายหลัง
อันนี้คือเรียกใช้ sub copyToFolder(ชื่อtextbox,ชื่อโฟลเดอร์ที่จะย้ายไฟล์มาเก็บ,ชื่อฟิล์ที่จะเก็บ path ในตาราง)
Private Sub filepaath_Click() Call copyToFolder(Me.filepath, "images", Me.file_pattern) End Sub
ส่วน Sub copyToFolder อันนี้ต้องไล่โค๊ตแล้วเอาไปประยุกต์ใช้เอาเองนะครับ ^^
Sub copyToFolder(ByRef o As Object, ByVal ftext As String, ByRef field As Object) If (o.Value = "") Then Dim f As Object Set f = Application.FileDialog(3) f.AllowMultiSelect = True f.Title = "กรุณาเลือกไฟล์รูป หรือ ไฟล์ PDF เพื่อแนบไปกับสินค้านี้" f.Show If (f.SelectedItems.Count > 0) Then For Each vrtSelectedItem In f.SelectedItems Dim fs As Object Dim oldPath As String, newPath As String oldPath = vrtSelectedItem Fname = Filename(vrtSelectedItem) fext = EXTname(Fname) Newname = Me.cus_code & "_" & Me.pro_code & "." & fext newPath = CurrentProject.Path & "\" & ftext & "\" & Newname Set fs = CreateObject("Scripting.FileSystemObject") Call fs.CopyFile(oldPath, newPath, True) Set fs = Nothing field.Value = Newname o.Requery Next End If Else thisfile = CurrentProject.Path & "\" & ftext & "\" & field.Value If (FileExists(thisfile)) Then Application.FollowHyperlink thisfile, , True Else field.Value = "" o.Requery MsgBox "ไฟล์ที่เคยแนบอาจโดนลบไปแล้วกรุณาเลือกไฟล์เพื่อแนบอีกครั้ง" End If End If End Sub
5 ถ้าทำถูกต้องนะครับ เราก็จะได้ฟอร์มที่สามารถคลิกที่ textbox เพื่อเลือกไฟล์รูปมาเก็บไว้ที่ folder ที่เรากำหนด ได้ โดยเราเก็บแค่ path ไว้ในตารางเท่านั้น ส่วนจะเอา path ไปทำอะไรต่อก็แล้วแต่นะครับ ^^
ที่ผมเคยทำมีอยู่วิธีนี้วิธีเดียวครับยอมรับว่าค่อนข้างยากเหมือนกัน เป็นกำลังใจให้นะครับ ^^
07/06/2015 at 10:20 PM #520Pirin PhonParticipantยากมากครับ ผมมือใหม่จะทำได้ไหมเน่ี่ย แต่อธิบายได้ละเอียดมากครับ ผมจะลองทำดู ขอบคุณมากๆน๊ะครับ ได้ทำได้แล้วจะแจ้งให้ทราบน๊ะครับ
-
AuthorPosts
- You must be logged in to reply to this topic.