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 ►

20100621

ตอน 4.2 :: form เปิดตาราง #2

0 comments
> ข้อควรทราบ <
ฟอร์มถ้าไม่มีปุ่มควบ คุมก็ทำงานไม่สะดวก ในตอนนี้จะแนะนำ การสร้างปุ่มโดยใช้ wizard เพื่อให้การทำงานกับฟอร์มสะดวกขึ้น
ขั้นตอนที่ 1 :
เมื่อ copy form01 เป็น form02 แล้ว ให้ design form02 ขึ้นมา แล้วเลือก toolbox ด้านข้าง ให้ option ของ wizard เปิดดังวงกลมสีแดง แล้วเลือก command button ดังวงกลมสีเหลือง จะเปิดตารางให้เลือกปุ่ม ตามตัวอย่างผมเลือกปุ่ม goto first record จะให้ผลดังภาพถัดไป
ตัวอย่างนี้แสดงการเลือกปุ่ม ใน mode ที่ wizard ถูกเปิด

ขั้นตอนที่ 2 :
แสดงให้เห็นว่ามีปุ่มขึ้นมา เพื่อใช้เลือกให้ไปที่ระเบียนแรกของแฟ้ม แต่บางท่านไม่ชอบเห็น ตัวเลือกระเบียน ที่อยู่ทางด้านซ้าย และปุ่มนำทาง ด้านล่าง ก็สามารถเอาออกได้
ตัวอย่างนี้แสดงผลของการสร้างปุ่มขึ้นใช้งาน

ขั้นตอนที่ 3 :
ให้ double click บนปุ่มที่ถูกวงสีแดงไว้ จะขึ้นคุณสมบัติมาให้เลือก ผมเลือก ตัวเลือกระเบียนเป็นไม่ และปุ่มนำทางเป็นไม่ จะทำให้ได้ผลลัพธ์ดังด้านล่าง
ตัวอย่างนี้แสดงคุณสมบัติของฟอร์ม

ขั้นตอนที่ 4 :
แสดงการสร้างปุ่ม first,previous,next,last,new และ close ขึ้นใช้งาน และให้กำหนดคุณสมบัติ แถบเลื่อนเป็น ไม่ทั้งสองด้าน
ตัวอย่างนี้แสดงการสร้างปุ่มทั้ง 6 ใช้งาน
Read more ►

ตอน 4.1 :: form เปิดตาราง #1

0 comments
> ข้อควรทราบ <
ตอนนี้ง่ายมาก เพราะสร้างฟอร์มขึ้นมา โดยกำหนดตาราง ชื่อ catalog มาใช้ในฟอร์ม แล้วก็เลือก รายชื่อเขตข้อมูล จะแสดงรายชื่อเขตข้อมูลทั้งหมด ของตารางนั้น แล้ว click พร้อมกดปุ่ม Ctrl ทุก field จากนั้นใช้ mouse ลาก field มาไว้ใน ฟอร์ม เป็นอันเรียบร้อย
ฟอร์มนี้จะมีหน้าที่แสดงข้อมูลจากตาราง สามารถเพิ่มข้อมูล ลบ หรือแก้ไขข้อมูลได้ทันที
ขั้นตอนที่ 1 :
เมื่ออยู่ใน database windows แล้วเลือก form จากนั้นเลือก สร้างใหม่ จะสามารถขึ้นหน้าต่างหน้านี้ขึ้นมา ให้เลือกว่าจะสร้าง form วิธีไหน ปกติผมชอบใช้ design view เพราะสามารถคุมได้ทุกอย่าง เพียงแต่ต้องศึกษาการควบคุมให้เข้าใจเท่านั้น
ตัวอย่างนี้ตอนสร้างใหม่พร้อมเลือกตาราง catelog

ขั้นตอนที่ 2 :
เมื่อเลือกปุ่มที่มีสีแดงวงไว้ จะเกิดตารางที่ชื่อว่า field list ให้นำ field ทั้งหมด มาใส่ใน form จะได้ผลดังภาพ
ตัวอย่างนี้แสดงการนำ field มาใส่ใน form

ขั้นตอนที่ 3 :
ถ้าต้องการทำงานเลยให้เลือกกดปุ่ม ที่วงสีน้ำเงินดับภาพด้านบน จะได้ผมดังภาพด้านล่าง ซึ่งทำงานกับตาราง catelog ได้ทันที แต่ถ้าต้องการกลับไปแก้ไขฟอร์ม ให้กดปุ่มที่มีวงกลมสีเหลืองล้อมรอบ
ตัวอย่างนี้แสดงฟอร์มที่ทำงานกับตาราง catalog
Read more ►

SQL + Northwind

0 comments
ตัวอย่าง SQL ใน Northwind.mdb
    
    
    
  1. แสดงเลขที่ใบสั่งซื้อ เรียงตามรหัสพนักงาน
  2. select orderid, employeeid from orders order by employeeid;
  3. แสดงเลขที่ใบสั่งซื้อ จับกลุ่มตามรหัสพนักงาน
  4. select orders.employeeid, count(orders.orderid) as c from orders group by orders.employeeid order by count(orders.orderid) desc;
  5. เลือกตามรหัสลูกค้า
  6. SELECT * FROM customers WHERE customerid = 'ANTON';
  7. ใครซื้อใบไหนบ้าง
  8. select orders.orderid, employees.lastname from orders, employees where orders.employeeid = employees.employeeid order by employees.lastname;
  9. เชื่อมตารางด้วย where : ลูกค้าแต่ละคนซื้อกี่ใบ
  10. select employees.employeeid, count(orders.orderid) as xx, first(employees.lastname) as x from orders, employees where orders.employeeid = emplyoees.employeeid group by employees.employeeid;
  11. เชื่อมตารางด้วย join : ลูกค้าแต่ละคนซื้อกี่ใบ
  12. select orders.employeeid, first(orders.orderid) as x, count(orders.orderid) as c from (orders inner join employees on orders.employeeid = employees.employeeid) group by orders.employeeid;
  13. ใบสั่งซื้อแต่ละใบ มียอดเท่าใด
  14. select [order details].orderid, sum((unitprice * quantity) - (unitprice * quantity * discount)) from [order details] group by [order details].orderid;
SQL Function in Microsoft Access
sum, avg, min, max, count, stdev, first, last
+ ถ้าทุกค่าต่างกัน ส่วนเบี่ยงเบน (stdev) จะเป็น 100%
+ ถ้าทุกค่าเหมือนกัน ส่วนเบี่ยงเบน (stdev) จะเป็น 0%
แนะนำเว็บ (Web Guides)
+ http://www.thaiall.com/mysql
+ C:\Program Files\Microsoft Office97\Office\Samples\ northwind.mdb (532 KB)
+ http://www.thaiall.com/project/projectdbnwind.htm
Read more ►

ตอน 1.2 :: 2 Query อย่างง่าย

0 comments
> ข้อควรทราบ <
Query คือความสามารถที่ยอดเยี่ยมในการเรียกข้อมูล ในภาษาอื่น ๆ ต้องใช้ SQL เขียนเพื่อเรียกข้อมูล แต่ใน ACCESS สามารถสร้าง Query แล้วนำไปใช้ได้ทันที และ Query ยังมีความสามารถในการปรับปรุงข้อมูลเช่น เพิ่ม ลบ แก้ไขข้อมูลได้อย่างง่าย ไม่ต้องเขียน Code ยาว ๆ เพื่อปรับปรุงข้อมูล สำหรับรายละเอียดเรื่องปรับปรุงข้อมูลจะกล่าว โดยละเอียดในตอนต่อไป


ขั้นตอนที่ 1 : เลือกสร้างใหม่ และเลือก Design view

ขั้นตอนที่ 2 : เลือกตารางมา 2 ตาราง ถ้า field ชื่อเดียวกัน และเป็น primary key จะทำการ link กัน อัตโนมัติ แต่สามารถยกเลิก หรือลากไปสัมพันธ์กัน หรือจะ Double click ที่เส้น เพื่อกำหนดความสัมพันธุ์ก็ได้ แล้ว Double ใน Field ของตาราง เพื่อกำหนด Field ที่ต้องการนำมาแสดงผล

ขั้นตอนที่ 3 : ตัวอย่างผลลัพธ์จากการ Click ที่บนซ้ายสุด

ขั้นตอนที่ 4 : ดูว่า SQL เขียนอย่างไร เลือกจากมุมบนซ้ายสุด ที่เขียนว่า SQL (อยู่ที่ปุ่มเดียวกับ ปุ่ม view หรือ design นั่นเอง)
Read more ►

ตอน 1.3 :: สร้างเพิ่มอีก 6 ตาราง

0 comments
> ข้อควรทราบ <
ในตอนที่ 1.1 เรารู้วิธีสร้างตาราง ในตอนนี้ผมจะให้สร้างอีก 6 ตารางตามโครงสร้างด้านล่าง ซึ่งความตั้งใจจริง คือการฝึกให้ท่านชินกับการสร้างตาราง
ความชำนาญเกิดจากการปฏิบัติบ่อย ๆ เท่านั้นครับ สร้างตาราง ถ้าจะให้ชินก็ต้องสร้างกันบ่อย ๆ ซึ่ง 6 ตารางนี้จะนำไปใช้ในตอนต่อ ๆ ไป ในโอกาสต่อไปครับ เพราะทั้ง 6 ตารางด้านล่างจะมีความสัมพันธุ์กัน แต่ tmp จะเป็นตารางต่างหากที่ใช้ทดสอบ เพราะ tmp ย่อมาจาก temp ซึ่งแปลว่าชั่วคราวไงครับ


ขั้นตอนที่ 1 : สร้างตาราง catalog

ขั้นตอนที่ 2 : สร้างตาราง customer

ขั้นตอนที่ 3 : สร้างตาราง debt

ขั้นตอนที่ 4 : สร้างตาราง product

ขั้นตอนที่ 5 : สร้างตาราง sale

ขั้นตอนที่ 6 : สร้างตาราง saled

ขั้นตอนที่ 7 : สร้างตาราง tmp
ข้อมูลนี้นำไปใช้ใน ตอน 3.1 ถึง 3.4 เรื่องการ เขียน Module แล้วสั่งให้ SQL ทำงานกับตาราง tmp เช่น เพิ่ม ลบ หรือแก้ไขเป็นต้น
Read more ►

ตอน 1.1 :: 2 table อย่างง่าย

0 comments
บทนี้เป็นบทแรกในการเรียน Microsoft access ซึ่งผู้เรียนควรมีพื้นฐานของระบบฐานข้อมูลมาก่อน (แต่ถ้าไม่มีก็ไม่ เป็นไร สั่งสมกันได้) โดยบทเรียนนี้จะแสดงวิธีการสร้างตารางขึ้นมา 2 ตารางไว้เก็บข้อมูล เมื่อสร้างเสร็จแล้วก็สามารถเพิ่มข้อมูลในตารางได้ ซึ่งการเพิ่มข้อมูลก็คล้ายกับ excel แต่จะมี function ต่าง ๆ น้อยกว่า excel เล็กน้อย
บทนี้มี 7 ขั้นตอน เมื่อทำทั้ง 7 ขั้นตอนแล้ว จะได้ตารางขึ้นมา 2 ตาราง ที่มีความสัมพันธ์กัน เพื่อนำไปใช้ในบทอื่นต่อไป ผู้เรียน จึงควรใส่ข้อมูลในตารางทั้ง 2 อย่างสมเหตุสมผล ให้เรียบร้อย


ขั้นตอนที่ 1 : การสร้างตาราง

ขั้นตอนที่ 2 : การสร้างตาราง

ขั้นตอนที่ 3 : การสร้างตาราง

ขั้นตอนที่ 4 : การสร้างตาราง

ขั้นตอนที่ 5 : การสร้างตาราง

ขั้นตอนที่ 6 : การสร้างตาราง

ขั้นตอนที่ 7 : การสร้างตาราง
Read more ►
 

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