20100831

ใส่รูปในฐานข้อมูล

0 comments
ผมต้องการใส่รูปภาพในฐานข้อมูลครับ
ใครทราบวิธีบ้างครับ ประมาณว่าถ้าเปิดตาราง
ในมุมมองแผ่นข้อมูล มีชื่อนามสกุลและ โชว์รูปด้วยครับ
ขอบคุณสำหรับผู้ตอบด้วยครับ
----------------------------------------------------------------

ในฐานข้อมูลอะไรครับ
- MySQL , MS SQL, Access
เว็บนี้ เน้น Access เป็นหลัก ดังนั้นถามจี้ลงไปถึง Access ต่อเลยก็แล้วกัน
- ตัวที่จะเก็บรูปภาพนี้ เป็น ฐานข้อมูลปัจจุบัน หรือฐานข้อมูลตัวอื่นซึ่งแยกไว้     ที่ถามอย่างนี้เพราะว่า
โดยปกติการเก็บไฟล์รูปภาพไว้ในฐานข้อมูลไม่น่าจะเป็นวิธีที่ดี เพราะทำให้ฐานข้อมูลมีขนาดใหญ่อย่างรวดเร็ว (บวม) แม้โดยหลักแล้วจะสามารถเก็บได้ก็ตาม เพียงแค่กำหนดชนิดข้อมูลของฟิลด์ที่จะเก็บให้เป็น OLE OBJECT    และคอนโทรลที่จะนำข้อมุลนี้ไปแสดงบนฟอร์ม ก็ให้เป็นคอนโทรลชนิด BoundOLEobject

วิธีที่เหมาะ ที่คนอื่นๆ ส่วนใหญ่เค้าทำกันคือ
- เก็บรูปภาพไว้ในโฟลเดอร์ที่กำหนด
- ในตารางเก็บข้อมูล มีฟิลด์ที่เห็น text ไว้เก็บ path ของรูปภาพนั้น
- เมื่อจะแสดงข้อมูลบนฟอร์ม หรือรายงาน ให้ใช้คอนโทรล image
- ให้ source ของ image นั้น = ค่าในฟิลด์ (path ของไฟล์รูปภาพ) เช่น


นอกดาต้าเบส ผมมีโฟล์เดอร์เก็บรูปภาพวางไว้ข้าง mdb ตัวนี้เสมอ ไปไหนมาไหนด้วยกัน ชื่อโฟล์เดอร์ว่า GloveProcessImages ผมจะเก็บรูปภาพของสินค้าไว้ใน นั้น
ผมมีฟิลด์ที่เก็บ pathของไฟล์ในตาราง ชื่อว่า picture ชนิดข้อมูลเป็น text
ที่ฟอร์ม ผมจะมีคอนโทรลที่เกี่ยวข้องสองตัว
- textbox ผูกไว้กับฟิลด์ picture ชื่อ textbox ตัวนี้ คือ PicturePath
- Image ไม่ผูกกับฟิลด์ใดๆ ผมตั้งชื่อคอนโทรลตัวนี้ชื่อ Image1
ผมก็จะเขียนโค้ดประมาณนี้ ครับ

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


------------------------------------------------------------------

ขอบคุณ คุณ yeadram มากครับที่กรุณาผมบ่อยมากครับ
ฐานเป็น Access ครับ
ผมทราบว่าวิธีนี้ไม่ดีครับเลยไม่เคยทำ
แต่งานนี้ทำฐานเพื่อนในห้องแค่ 28 คนใส่รูปที่มีขนาดเล็กมาก
และไม่อยากให้มีไฟล์หลายไฟล์ เผื่อคนไม่เข้าใจเรื่องการ Link
จะทำให้มันยุ่งยากครับ ผมเริ่มจากสร้างฟิลด์ ที่เป็น OLEOPJECT แล้วครับ
และก็เลือกไปยังรูปที่ต้องการแล้วครับ แต่พอสร้าง Report โดยเลือกจากตาราง
ที่เก็บข้อมูลนี้ พอแสงในมุมมองรายงาน มันขึ้น เป็นตัวอักษรชื่อไฟล์นะครับ
แต่พอมาอ่านที่คุณ yeadram ชี้แนะก็เข้าใจว่าผมน่าจะผิดขั้นตอนตรงที่ไม่ได้ใช้คอนโทรลชนิด BoundOLEobject   ผมไปใช้จากโปรแกรมกำหนดให้
แต่เดี๋ยวผมลองดูถ้าใช้ได้จะกลับมาขอบคุณอีกที่ครับ ^J^

==============================================

ผมมีตัวอย่างไม่ทราบว่าใช้ได้หรือไม่ ไป download ที่นี่ครับ
http://www.up2box.com/download.php?file=070912c4e054d5a7ef11ec6af32a5c32135bff

=================================================

ขอบคุณ Arsitkpnplus ไม่ใช่แบบนี้ครับ แบบนี้ทำได้
อยากให้อยู่ในฐานเลยอะครับ นำไฟล์ .mdb ไปไฟล์เดียวเปิดได้เลย
=============================================

การตั้งค่าชนิดข้อมูล



การใส่รูปภาพเข้าตาราง
- คลิ๊กขวาที่ฟิลด์นั้น เลือกคำสั่ง แทรกวัตถุ



เมื่อมี dialog ขั้นมา คลิ๊กตามลำดับ
- เลือกจากไฟล์
- เรียกดู
- ทำการเลือกไฟล์ (ที่ผมเลือกเป็นตัวอย่างคือ 4.jpg)



- เมื่อทำการเลือกเสร็จแล้วกลับมาดูผลที่หน้าตาราง จะเห็นว่า
มันไม่ได้มีตัวหนังสือที่บอกว่าเป็น 4.jpg เลยแต่ไม่ต้องตกใจ นี่คือวิธีที่ถูกแล้ว



เวลาออกแบบรายงาน ดูตามจุดที่วงนะครับ
- ใช้คอนโทรล เฟรมวัตถุที่ผูก (BoundOLEobject)
- ขนาดของคอนโทรล กว้างใหญ่ตามใจชอบ
- โหมดขนาดเลือกได้ตามใจชอบ สำหรับผม ไม่ stretch ก็ zoom ครับ
- ชื่อคอนโทรล ตั้งใหม่หรือไม่ ตามใจชอบ
- แหล่งข้อมูล ขอให้เป็นชื่อฟิลด์ที่เป็นชนิด OLE OBJECT ก็แล้วกัน (ในที่นี้ ฟิลด์นี้ชื่อ gt)



* * อย่าลืมทำการ compact database * *
ผมทำอย่างนี้แหละครับ ได้ตามที่ต้องการเลย
ไม่ทราบว่าคุณ Un_Kop ทำอย่างนี้หรือเปล่า หรือว่าไม่ตรงกันตรงไหนบ้างครับ


===========================================================

ไม่ทราบลองทำ BLOB ใน Menu แรกหรือยังครับ มัน include รูปไว้ใน Database เลย

====================================================

คุณ yeadram ครับผมทำเหมือนทุกขั้นตอนเลยครับ
ต่างตรงที่วงกลมที่ 7 ตรงตารางครับผมไม่มีเมนู Microsoft foto E..... ให้เลือกครับ
ผมใช้ Access 2003 ครับเลยไม่มีหรือว่าอะไรไม่ทราบ
นอกนั้นเหมือนหมด และขั้นตอนสุดท้ายคือผม เปิดรายงานในมุมมองรายงาน
มันขึ้น 4.jpg (สมมุติตามตัวอย่าง) ผมจะโพสรูปให้ดู พอดีทำไม่เป็นขอโทษทีครับ

+++++++++++++++++++++++++++++++++++++++++++++++++++

1 Microsoft photo editor เป็น โปรแกรมเสริม ที่ทางไมโครซอฟท์แถมฟรี มาพร้อมกับ ชุด office แทบทุกเวอร์ชั่น ตอนติดตั้ง ต้องเลือกโหมดการติดตั้งด้วยการเลือกออปชั่นด้วยตัวเอง
มันจะอยู่ในกลุ่มประมาณ office tools ลองหาดูครับ ณ ตอนนี้ ถ้าคุณ Un_Kop มีแผ่น ออฟฟิศ แล้วอยากจะเพิ่มตรงนี้ ก็เข้าไปเพิ่มได้ครับ (น่าจะเป็นแล้วล่ะ)

2 OLE OBJECT เป็นเรื่องที่ผมไม่กระจ่างเอาซะเลย แต่ผมก็ลองผิดลองถูกมาจนได้ ถ้าให้ทำก็ลุยๆ ไปครับ แต่ถ้าให้อธิบายจริงๆ ว่ามันเป็นมายังไง ทำงานยังไง สัมพันธ์อะไร มีข้อจำกัดอะไรบ้าง คงไม่ไหวครับ   ถ้าให้เดาปัญหาของคุณ Un_Kop ก็คือ สิ่งที่คุณเก็บใน ตาราง ขณะนี้ access ไม่ถือว่าเป็น OLE หรืออาจเป็น แต่ไม่สามารถหาไลบรารี่ มาถอดรหัส OLE ตัวนี้ได้

3 จำเป็นหรือไม่ ต้องเป็น object ที่อ่านด้วย Microsoft Photo editor ใช้ object อย่างอื่น เช่น pdf หรือ bitmap ที่สามารถอ่านออกด้วย Microsoft photo and fax viewer หรือ ms paint ทดแทนได้หรือเปล่า อันนี้ผมก็ไม่ค่อยกระจ่าง น่าจะทดสอบข้อสมมติฐานนี้โดยการไม่ แทรก jpg แต่ลอง แทรก pdf แล้วดูที่รายงาน ว่า มันสามารถแสดง pdf ได้หรือไม่

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

สุดท้ายคือ ผมไปต่อไม่ได้แล้วครับ อิอิ คงต้องให้ผู้รู้ท่านอื่นๆ ช่วยต่อแล้วครับ

=============================================+++++
Read more ►
 

Copyright © Access เบื้องต้น Design by Gu