วิธีเอารูปภาพ jpg ลง access
กระทู้เก่าบอร์ด อ.Yeadram

 10,043   15
URL.หัวข้อ / URL
วิธีเอารูปภาพ jpg ลง access

ตอนนี้ผมติดปัญหาตรงที่ว่าต้องใช้ไฟล์ bmp ในการบันทึกภาพลงฐานข้อมูล แต่ว่าไฟล์ bmp มันขนาดใหญ่มาก และงานของผมจำเป็นต้องใช้รูปเยอะ ซึ่งถ้าใส่รูปลงไปทั้งหมดแล้วไฟล์ของ Access น่าจะใหญ่ประมาณ 1-2 Gb
แต่จากที่ลองค้นกระทู้เก่าๆ อ่านแล้วเข้าใจว่าสามารถใช้ไฟล์ 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 ในส่วนไหนบ้าง รบกวนด้วยนะครับ
3 @R05010
กระทู้ที่คุณอ้างนั้น ไม่ได้มีการพูดคุยถึงเรื่องใดๆเกี่ยวกับโค้ดเลย ไม่ทราบบอกผิดหรือไม่ อย่างไรก็ตาม ลองค้นหาด้วยคำว่า picture ดูสิครับ มีหลายกระทู้อธิบายไว้แล้ว
4 @R05012
http://www.thai-access.com/yeadram_view.php?topic_id=60
ต้องขอโทษด้วยครับ ใส่ลิ้งค์ผิดครับ
ต้องขอบคุณมากนะครับ ผมจะลองค้นหาคำว่า 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

นำโค้ดนี้ไปใช้แล้วภาพไม่ขึ้นครับ แต่ก็ไม่มีอะไรฟ้องขึ้นมา ไม่รู้ว่าผิดพลาดตรงขั้นตอนไหน
เลยอยากรบกวนให้อาจารย์ช่วยอธิบายให้หน่อยครับว่าในโค้ดนี้อะไรบ้างคือตัวแปรที่ต้องแก้ไขให้ตรงกับข้อมูลที่เราสร้างขึ้นมาบ้าง
ถ้าใช้คำถามที่แปลกๆ ต้องขออภัยด้วยนะครับเพราะมือใหม่มากๆ
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
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
8 @R05026
ต้องเขียน
Me.Image2.picture
ไม่ใช่เขียน
Me.Image2.picture2
9 @R05032
ขอบคุณ อ.สันติสุขกับ อ.yeadram มากๆ ครับ ใช้งานได้แล้ว

แต่รบกวนถามเป็นความรู้เพิ่มเติมได้มั๊ยครับว่า

ทำไมทำวิธีนี้แล้วไฟล์ Access จะใหญ่ขึ้นผิดปกติ ทั้งๆ ที่ไม่ได้นำรูปลงไปในฐานของ Access เลย ลองทำการ compact and repair database ก็แล้ว แต่ไฟล์ขนาดเล็กลงเพียงนิดเดียว
10 @R05033
ขนาดกี่ MB
11 @R05034
ในฐานข้อมูลของผมจะต้องทำฟอร์มแสดงรูปพร้อมกันครั้งละ ประมาณ 60 ภาพ
โดยทำแยกเป็น 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)
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 รูป มันฟ้องว่าผิดพลาดน่ะครับ
14 @R05055
ฟ้องผิดพลาดที่บรรทัดไหน และฟ้องผิดพลาดว่าอะไร ขอข้อความเต็มๆ ผมไม่ใช่หมอดู
15 @R05063
ขออนุญาตครับ อ.สันติสุข
โค้ดของคุณ 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


@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3796s