กระทู้เก่าบอร์ด อ.Yeadram
        
           10,226   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.0611s
    
      
		