กระทู้เก่าบอร์ด อ.Yeadram
10,043 15
URL.หัวข้อ /
URL
วิธีเอารูปภาพ jpg ลง access
ตอนนี้ผมติดปัญหาตรงที่ว่าต้องใช้ไฟล์ bmp ในการบันทึกภาพลงฐานข้อมูล แต่ว่าไฟล์ bmp มันขนาดใหญ่มาก และงานของผมจำเป็นต้องใช้รูปเยอะ ซึ่งถ้าใส่รูปลงไปทั้งหมดแล้วไฟล์ของ Access น่าจะใหญ่ประมาณ 1-2 Gb
แต่จากที่ลองค้นกระทู้เก่าๆ อ่านแล้วเข้าใจว่าสามารถใช้ไฟล์ jpg แทนได้ โดยวิธีการเขียนโค้ดเพื่อลิ้งค์ไปยังรูปภาพ
ผมได้ลองอ่านๆๆ หลายรอบแล้วแต่ก็ยังไม่เข้าใจวิธีการทำ เลยจะรบกวนขอคำแนะนำครับ ว่าลักษณะงานที่ต้องใช้รูปเยอะๆ แบบผมนี้จะต้องทำยังไงบ้าง
แต่จากที่ลองค้นกระทู้เก่าๆ อ่านแล้วเข้าใจว่าสามารถใช้ไฟล์ jpg แทนได้ โดยวิธีการเขียนโค้ดเพื่อลิ้งค์ไปยังรูปภาพ
ผมได้ลองอ่านๆๆ หลายรอบแล้วแต่ก็ยังไม่เข้าใจวิธีการทำ เลยจะรบกวนขอคำแนะนำครับ ว่าลักษณะงานที่ต้องใช้รูปเยอะๆ แบบผมนี้จะต้องทำยังไงบ้าง
15 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R05007
เอาลิงค์ที่คุณอ่านแล้วไม่เข้าใจมาถามต่อ น่าจะง่ายกว่าเพราะคนอธิบายคงไม่อยากมาเริ่มนับ 1 ใหม่
2 @R05009
http://www.thai-access.com/yeadram_view.php?topic_id=566
อย่างเช่นในลิ้งค์ข้างบนนี้ ลองอ่านดูแล้วยังไม่ค่อยเข้าใจครับ
ถ้าผมต้องการนำ code มาประยุกต์ใช้ต้องมีการแก้ไข code ในส่วนไหนบ้าง รบกวนด้วยนะครับ
อย่างเช่นในลิ้งค์ข้างบนนี้ ลองอ่านดูแล้วยังไม่ค่อยเข้าใจครับ
ถ้าผมต้องการนำ code มาประยุกต์ใช้ต้องมีการแก้ไข code ในส่วนไหนบ้าง รบกวนด้วยนะครับ
3 @R05010
กระทู้ที่คุณอ้างนั้น ไม่ได้มีการพูดคุยถึงเรื่องใดๆเกี่ยวกับโค้ดเลย ไม่ทราบบอกผิดหรือไม่ อย่างไรก็ตาม ลองค้นหาด้วยคำว่า picture ดูสิครับ มีหลายกระทู้อธิบายไว้แล้ว
4 @R05012
http://www.thai-access.com/yeadram_view.php?topic_id=60
ต้องขอโทษด้วยครับ ใส่ลิ้งค์ผิดครับ
ต้องขอบคุณมากนะครับ ผมจะลองค้นหาคำว่า picture ลองดูก่อนครับ
ต้องขอโทษด้วยครับ ใส่ลิ้งค์ผิดครับ
ต้องขอบคุณมากนะครับ ผมจะลองค้นหาคำว่า picture ลองดูก่อนครับ
5 @R05023
Private Sub Form_Current()
' ----- คำสั่งอื่นๆ ถ้ามี
' ----- คำสั่งอื่นๆ ถ้ามี
' ----- คำสั่งอื่นๆ ถ้ามี
ShowPic
' ----- คำสั่งอื่นๆ ถ้ามี
' ----- คำสั่งอื่นๆ ถ้ามี
End Sub
Private Sub ShowPic()
If Me.PicturePath <> "" Then
Me.Image1.Picture = CurrentProject.path & "\GloveProcessImages\" & Me.PicturePath
Else
Me.Image1.Picture = ""
End If
End Sub
นำโค้ดนี้ไปใช้แล้วภาพไม่ขึ้นครับ แต่ก็ไม่มีอะไรฟ้องขึ้นมา ไม่รู้ว่าผิดพลาดตรงขั้นตอนไหน
เลยอยากรบกวนให้อาจารย์ช่วยอธิบายให้หน่อยครับว่าในโค้ดนี้อะไรบ้างคือตัวแปรที่ต้องแก้ไขให้ตรงกับข้อมูลที่เราสร้างขึ้นมาบ้าง
ถ้าใช้คำถามที่แปลกๆ ต้องขออภัยด้วยนะครับเพราะมือใหม่มากๆ
' ----- คำสั่งอื่นๆ ถ้ามี
' ----- คำสั่งอื่นๆ ถ้ามี
' ----- คำสั่งอื่นๆ ถ้ามี
ShowPic
' ----- คำสั่งอื่นๆ ถ้ามี
' ----- คำสั่งอื่นๆ ถ้ามี
End Sub
Private Sub ShowPic()
If Me.PicturePath <> "" Then
Me.Image1.Picture = CurrentProject.path & "\GloveProcessImages\" & Me.PicturePath
Else
Me.Image1.Picture = ""
End If
End Sub
นำโค้ดนี้ไปใช้แล้วภาพไม่ขึ้นครับ แต่ก็ไม่มีอะไรฟ้องขึ้นมา ไม่รู้ว่าผิดพลาดตรงขั้นตอนไหน
เลยอยากรบกวนให้อาจารย์ช่วยอธิบายให้หน่อยครับว่าในโค้ดนี้อะไรบ้างคือตัวแปรที่ต้องแก้ไขให้ตรงกับข้อมูลที่เราสร้างขึ้นมาบ้าง
ถ้าใช้คำถามที่แปลกๆ ต้องขออภัยด้วยนะครับเพราะมือใหม่มากๆ
6 @R05024
สมมุติว่าคุณแสดง ชื่อ path ของไฟล์รูปภาพบนหน้าฟอร์มไว้ที่เท็กซ์บ็อกซ์ชื่อว่า PicturePath ซึง path นี้เป็น string เก็บที่อยู่ของไฟล์รูปภาพไว้ในรูปแบบ "drive:\path\...\file.bmp หรือ .jpg" ส่วนอิมเมจคอนโทรลที่ใช้แสดงรูปภาพ สมมุติคุณตั้งชื่อว่า Image1 ดังนั้นโค้ดของคุณก็จะเป็นดังนี้
Private Sub ShowPic()
If Nz(Me.PicturePath,"") = "" Then
Me.Image1.Picture = Me.PicturePath
Else
Me.Image1.Picture = ""
End If
End Sub
Private Sub ShowPic()
If Nz(Me.PicturePath,"") = "" Then
Me.Image1.Picture = Me.PicturePath
Else
Me.Image1.Picture = ""
End If
End Sub
7 @R05025
ลองไปลองมาได้แล้วครับ จะสอบถามเพิ่มเติมครับ
ว่าถ้าในฟอร์ม 1 หน้า แต่มีหลายรูปภาพที่ไม่เหมือนกัน จะต้องแก้โค้ดยังไงบ้างครับ
ลองเพิ่มไปอีกบรรทัดแล้วมันไม่ได้
Private Sub ShowPic() If Me.picturepath <> "" Then Me.image1.picture = CurrentProject.Path & "\Picture\" & Me.picturepath Me.Image2.picture2 = CurrentProject.Path & "\Picture\" & Me.picturePath2 Else Me.image1.picture = "" Me.Image2.picture2 = "" End If End Sub
ว่าถ้าในฟอร์ม 1 หน้า แต่มีหลายรูปภาพที่ไม่เหมือนกัน จะต้องแก้โค้ดยังไงบ้างครับ
ลองเพิ่มไปอีกบรรทัดแล้วมันไม่ได้
Private Sub ShowPic() If Me.picturepath <> "" Then Me.image1.picture = CurrentProject.Path & "\Picture\" & Me.picturepath Me.Image2.picture2 = CurrentProject.Path & "\Picture\" & Me.picturePath2 Else Me.image1.picture = "" Me.Image2.picture2 = "" End If End Sub
8 @R05026
ต้องเขียน
Me.Image2.picture
ไม่ใช่เขียน
Me.Image2.picture2
Me.Image2.picture
ไม่ใช่เขียน
Me.Image2.picture2
9 @R05032
ขอบคุณ อ.สันติสุขกับ อ.yeadram มากๆ ครับ ใช้งานได้แล้ว
แต่รบกวนถามเป็นความรู้เพิ่มเติมได้มั๊ยครับว่า
ทำไมทำวิธีนี้แล้วไฟล์ Access จะใหญ่ขึ้นผิดปกติ ทั้งๆ ที่ไม่ได้นำรูปลงไปในฐานของ Access เลย ลองทำการ compact and repair database ก็แล้ว แต่ไฟล์ขนาดเล็กลงเพียงนิดเดียว
แต่รบกวนถามเป็นความรู้เพิ่มเติมได้มั๊ยครับว่า
ทำไมทำวิธีนี้แล้วไฟล์ Access จะใหญ่ขึ้นผิดปกติ ทั้งๆ ที่ไม่ได้นำรูปลงไปในฐานของ Access เลย ลองทำการ compact and repair database ก็แล้ว แต่ไฟล์ขนาดเล็กลงเพียงนิดเดียว
10 @R05033
ขนาดกี่ MB
11 @R05034
ในฐานข้อมูลของผมจะต้องทำฟอร์มแสดงรูปพร้อมกันครั้งละ ประมาณ 60 ภาพ
โดยทำแยกเป็น Subform ละ ประมาณ 5 - 10 ภาพ
แต่ละ Subform ก็จะนำโค้ดข้างบนนี้ไปใส่ ตอนนี้ใส่ไปได้ประมาณ 2 Subform ขนาดไฟล์ mdb ตอนนี้ได้ 21 mb แล้ว
จากตอนแรกที่ยังไม่ได้นำโค้ดมาใส่ขนาดไฟล์นี้ไม่ถึง 1mb
โดยทำแยกเป็น Subform ละ ประมาณ 5 - 10 ภาพ
แต่ละ Subform ก็จะนำโค้ดข้างบนนี้ไปใส่ ตอนนี้ใส่ไปได้ประมาณ 2 Subform ขนาดไฟล์ mdb ตอนนี้ได้ 21 mb แล้ว
จากตอนแรกที่ยังไม่ได้นำโค้ดมาใส่ขนาดไฟล์นี้ไม่ถึง 1mb
12 @R05037
ก็ถือว่าเพิ่มขึ้นอย่างรวดเร็ว มี 2 วิธีที่จะลดขนาดอย่างจริงๆจังๆ
1) สร้าง .mdb เปล่าแล้ว import ทุกๆอย่างจาก .mdb เก่าไป .mdb ใหม่ครับ
2) ทำการ Compact แล้ว Decompile แล้ว Compact อีกที แล้ว Compile อีกที (เรื่อง Decompile ลองอ่านดูใน http://www.thai-access.com/yeadram_view.php?topic_id=128)
1) สร้าง .mdb เปล่าแล้ว import ทุกๆอย่างจาก .mdb เก่าไป .mdb ใหม่ครับ
2) ทำการ Compact แล้ว Decompile แล้ว Compact อีกที แล้ว Compile อีกที (เรื่อง Decompile ลองอ่านดูใน http://www.thai-access.com/yeadram_view.php?topic_id=128)
13 @R05054
Private Sub ShowPic()
If Me.PicturePath <> "" Then
Me.Image1.Picture = CurrentProject.path & "\GloveProcessImages\" & Me.PicturePath
Me.Image2.Picture = CurrentProject.path & "\GloveProcessImages\" & Me.PicturePath2
Me.Image3.Picture = CurrentProject.path & "\GloveProcessImages\" & Me.PicturePath3
Else
Me.Image1.Picture = ""
Me.Image2.Picture = ""
Me.Image3.Picture = ""
End If
End Sub
ถามอาจารย์เพิ่มเติมครับ
ถ้าต้องการเพิ่มรูปทำแบบนี้ได้เลยใช่มั๊ยครับ ลองทำดูถ้า 2 รูปได้ แต่อีก subform ทำ 7 รูป มันฟ้องว่าผิดพลาดน่ะครับ
If Me.PicturePath <> "" Then
Me.Image1.Picture = CurrentProject.path & "\GloveProcessImages\" & Me.PicturePath
Me.Image2.Picture = CurrentProject.path & "\GloveProcessImages\" & Me.PicturePath2
Me.Image3.Picture = CurrentProject.path & "\GloveProcessImages\" & Me.PicturePath3
Else
Me.Image1.Picture = ""
Me.Image2.Picture = ""
Me.Image3.Picture = ""
End If
End Sub
ถามอาจารย์เพิ่มเติมครับ
ถ้าต้องการเพิ่มรูปทำแบบนี้ได้เลยใช่มั๊ยครับ ลองทำดูถ้า 2 รูปได้ แต่อีก subform ทำ 7 รูป มันฟ้องว่าผิดพลาดน่ะครับ
14 @R05055
ฟ้องผิดพลาดที่บรรทัดไหน และฟ้องผิดพลาดว่าอะไร ขอข้อความเต็มๆ ผมไม่ใช่หมอดู
15 @R05063
ขออนุญาตครับ อ.สันติสุข
โค้ดของคุณ Nat มองแล้วมันขัดใจจัง
เรียนคุณ Nat ครับ
If Me.PicturePath <> "" Then สังเกตไหมครับว่าคุณเช็คแค่ ตัวแปรเดียวว่ามันมีอยู่หรือไม่ แต่เวลาคุณจะใช้ คุณใช้งานทั้ง 3 ตัวแปร ทั้ง
PicturePath
PicturePath2
PicturePath3
ผมลองถามกลับ ถ้า PicturePath (ตัวแปรที่1) มันมีค่าอยู่ แต่ PicturePath2, PicturePath3 มันไม่มีค่า(อาจเป็น Null หรือเป็นค่าว่าง) คุณคิดว่า VBA จะทำงานตามคำสั่งในฝั่งใดของ if
ตามฝั่งเงื่อนไขจริง หรือตามฝั่งเงื่อนไขเท็จ?
โค้ดของคุณ Nat มองแล้วมันขัดใจจัง
เรียนคุณ Nat ครับ
If Me.PicturePath <> "" Then สังเกตไหมครับว่าคุณเช็คแค่ ตัวแปรเดียวว่ามันมีอยู่หรือไม่ แต่เวลาคุณจะใช้ คุณใช้งานทั้ง 3 ตัวแปร ทั้ง
PicturePath
PicturePath2
PicturePath3
ผมลองถามกลับ ถ้า PicturePath (ตัวแปรที่1) มันมีค่าอยู่ แต่ PicturePath2, PicturePath3 มันไม่มีค่า(อาจเป็น Null หรือเป็นค่าว่าง) คุณคิดว่า VBA จะทำงานตามคำสั่งในฝั่งใดของ if
ตามฝั่งเงื่อนไขจริง หรือตามฝั่งเงื่อนไขเท็จ?
Private Sub ShowPic()
Me.Image1.Picture = ""
Me.Image2.Picture = ""
Me.Image3.Picture = ""
If Me.PicturePath <> "" Then _
Me.Image1.Picture = CurrentProject.path & "\GloveProcessImages\" & Me.PicturePath
If Me.PicturePath2 <> "" Then _
Me.Image2.Picture = CurrentProject.path & "\GloveProcessImages\" & Me.PicturePath2
If Me.PicturePath3 <> "" Then _
Me.Image3.Picture = CurrentProject.path & "\GloveProcessImages\" & Me.PicturePath3
End Sub
Time: 0.3796s