add รูปผ่านฟอร์ม
กระทู้เก่าบอร์ด อ.Yeadram

 6,432   12
URL.หัวข้อ / URL
add รูปผ่านฟอร์ม

อยากสร้างช่องทางในการอัพรูปผ่านฟอร์มเหมือนในเว็บบอร์ดครับ

12 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R06057
ไม่รู้ว่าเข้าใจถูกหรือไม่ว่าที่ต้องการคือให้อัพไฟล์รูปภาพไปเก็บไว้บนเซิฟเวอร์ แล้วสามารถนำไฟล์นั้นมาแสดงบนฟอร์มของ Access

ถ้าใช่ ก็ลองค้นหาในบอร์ดนี้ด้วยคำว่า รูปภาพ ก็คงจะเห็นว่า หลักการคือการเก็บรูปภาพไว้ในโฟลเดอร์บนเซิฟเวอร์ ส่วนเทเบิลที่เก็บข้อมูล เราจะเก็บเฉพาะชื่อพาธและไฟล์ของรูปภาพเอาไว้เท่านั้น ตรงนี้ไม่มีอะไรเปลี่ยนแปลง ก็ยังคงเป็นไปตามหลักการเดิม

ส่วนการอัพรูปนั้น ก็คือการก๊อปปี้ไฟล์ขึ้นไปไว้บนเซิฟเวอร์ในโฟลเดอร์ที่กำหนดนั่นเอง อาจต้องมาจัดการเปลี่ยนชื่อไฟล์เมื่อก๊อปปี้ไปแล้ว เพื่อที่โปรแกรมจะได้ควบคุมไม่ให้ชื่อไฟล์ซ้ำกันเท่านั้นเอง สำหรับคำสั่งก๊อปปี้ไฟล์ ก็คือ

FileCopy "ชื่อพาธและไฟล์ต้นทาง", "ชื่อพาธและไฟล์ปลายทาง"

นอกนั้นเพื่อให้ผู้ใช้ ทำงานได้ง่าย ก็ต้องเขียนให้เปิด Open File Dialog เพื่อเลือกไฟล์ได้ (http://www.thai-access.com/yeadram_view.php?topic_id=381) แล้วคลิกปุ่ม ก็จะทำการก๊อปปี้ไฟล์ไปไว้ที่ปลายทาง พร้อมกันเขียนชื่อพาธและชื่อไฟล์ไปเก็บไว้ในเทเบิลที่เตรียมไว้ หลังจากนั้นก็นำเอามาแสเงในฟอร์มครับ หลักการก็มีเพียงเท่านี้ครับ
2 @R06059
โอ้ กำลังหาอยู่พอดี เดี๋ยวลองทำ แล้วจะกลับมา แสดงความเห็นด้วยคนครับ
3 @R06071
ขอบคุณอาจารย์สันติสุขมากครับจะลองทำดูครับ
4 @R06078
Form ผมเป็น Form ต่อเนื่องครับ กำลังสงสัยว่าจะใส่ คำสั่งนี้ไว้ตรงไหนถึงจะ Work

      If Me.Pic <> "" Then
            Me.Image1.Picture = Me.Pic
            Me.Image1.SizeMode = 1
        Else
            Me.Image1.Picture = ""
        End If

ME.pic เป็น Field Text ที่เก็บที่อยู่ของภาพ   ที่จะ Link ไปหา แต่เนื่องจากเป็น Form ต่อเนื่อง Record ไหน ME.pic เป็นค่าว่าง ผมต้องการให้ไม่แสดง Record ไหนมี รูป ก็แสดง ลองใส่ใน Form_Current() แล้ว ไม่ได้
5 @R06080
ที่ว่าไม่ได้คืออะไร คือไม่แสดงรูป หรือไม่เคลียร์รูป หรืออะไร ? และลองทำใน Single Form ดูว่าจะทำได้หรือไม่

ผมเคยเจอปัญหาว่ามันไม่ยอมเคลียร์รูปเมื่อเรากำหนด .Picture = "" ผมก็ไม่รู้เหมือนกันว่าทำไม ทั้งๆที่ตอนทดลองทำด้วยฟอร์มที่มีแต่ Image control ก็ทำได้ แต่พอนำไปใส่ใน application จริงๆแล้วกลับทำไม่ได้ ผมเลยใช้วิธีให้มันซ่อนด้วย .Visible เป็น True/False แทนการกำหนดให้ .Picture = ""
6 @R06081
ได้ปรับปรุง Code ตาม อ.แนะนำแล้วครับ
If Me.Pic <> "" Then
On Error GoTo EL:
            Me.Image1.Picture = Me.Pic
            Me.Image1.Visible = True
            Me.Image1.SizeMode = 1
   EL:       Exit Sub
       Else
            Me.Image1.Visible = False
      End If
    ใน Single Form หรือ Continue Form ก็ได้รูปตามปกติครับ แต่ประเด็นอยู่ตรงนี้ครับ สมมุติ ข้อมูล TABLE มีดังนี้
ID        PIC
1           //com1/a.jpg
2           //com2/b.jpg
3          //com3/c.jpg
เนื่องจาก Form ผมเป็น Continue Form ผมต้องการให้มันแสดงภาพ ตรงกับ Record นะครับ เช่น

ID 1 ก็แสดงภาพ    //com1/a.jpg
ID 2 ก็แสดงภาพ    //com2/b.jpg
..........................................

แต่ตอนนี้ มันแสดงภาพเดียวกัน เช่น Cursor อยู่ ID3 ทุก Record แสดงภาพเดียวกันคือ        //com3/c.jpg
ตรงนี้นะครับ ต้องทำอย่างไร ให้เป็นภาพใครภาพมัน ตาม Record ที่กำหนดให้เชื่อมโยง
7 @R06083
ไม่ได้ครับ ปัญหาอย่างหนึ่งของ Continuous Form ที่นักพัฒนาทั่วโลกแจ้งไปให้ทาง Microsoft ช่วยปรับปรุง แต่ก็ไม่เคยทำให้สักที ก็คือ พวกที่เป็น Unbound Control (คอลโทรลที่ไม่ได้ระบุค่าให้แก่ Control Source property หรือคอลโทรลที่ไม่มี Control Source property) มันจะแสดงลักษณะออกมาทุกบรรทัดในฟอร์มเหมือนๆกันหมด ... Image control ที่คุณทำ มันก็เป็น Unbound Control เช่นเดียวกัน

ที่พอทำได้ก็คือ
- ย้ายเอา Image Control ไปไว้ในส่วน Form Header section
- หรือเปลี่ยนไปเป็น Single Form แทน
- หรือเปลี่ยนไปใช้ Access 2007 หรือ 2010 ซึ่? Image Control สามารถเป็น Bound Control ได้
- ใช้ ActiveX Grid Control ที่มาจาก บ.อื่น เพื่อแสดงข้อมูลในรูปแบบตารางเหมือน Datasheet หรือ Continuous Form และยังมีความสามารถอื่นๆเพิ่มเติมมาด้วย
8 @R06087
สรุปว่าถ้าอยากให้ User สามารถเพิ่มข้อมูลพนักงานและเลือกรูปภาพใส่ใน Single Form ด้วยตนเองโดยกดปุ่ม Browse ที่เราสร้างขึ้นเองเพื่อลิงค์ไปที่พาร์ทที่อยู่ของไฟล์รูป โดยทำบนหน้าฟอร์มได้เลยต้องทำอย่างไรบ้างครับอาจารย์
9 @R06088
อ้าว ยังไงครับ องค์ประกอบต่างๆก็บอกไปหมดแล้วตั้งแต่คำตอบแรก แล้วที่บอกว่าจะไปทำ ทำไปถึงไหนแล้วครับ ติดปัญหาตรงไหนยังไงก็มาถามกันครับ
10 @R09020
ไม่แน่ใจนะครับ ลองดูว่าไม่ได้ใช้ Bound Object Frame control เป็นคอลโทรลบนหน้าฟอร์มหรือเปล่า หรือไม่ก็ไม่มีโปรแกรมที่ใช้แสดงรูปตามที่ Access ถามผู้ใช้เมื่อตอนเก็บ Object ของรูปลงเทเบิล เช่น เราเก็บรูปจากโปรแกรม PaintBrush แต่ตอนแสดงปรากฏว่าไม่มีโปรแกรม PaintBrush อยู่ในเครื่องที่จะแสดง
11 @R09021
หรือมี แต่โปรแกรมนั้นอาจจะเสียไป

โดยปกติแล้วเราไม่เก็บเป็น OLE Object นะครับเพราะมันจะกินเนื้อที่มหาศาล ลองสังเกตุดูจากขนาดไฟล์ฐานข้อมูลที่เพิ่มอย่างรวดเร็ว แต่ถ้ามีเหตุผลดีๆที่ต้องใช้ ก็ใช้ไปเถอะครับ หรือถ้า backend database ไม่ใช่ Access แต่เป็น DBMS ระดับใหญ่ขึ้นไปที่รองรับขนาดของฐานข้อมูลได้สูงๆ จะเก็บไว้ก็คงไม่เป็นไร
12 @R09028
อย่างที่ อ.สันติสุข ให้ไว้ครับ เรื่องการแสดงภาพในฟอร์มแบบ Continuous Form ถ้าใช้เป็น 2007 หรือ 2010 เราสามารถใส่ค่า Path (ที่อยู่ไฟล์ภาพ) ไว้ใน Control source ได้ครับ ผมลองทำดูแล้วใช้ได้ดีครับ

ตัวอย่าง
ที่ Contorl source ของ Image ที่เราสร้างขึ้น
=[CurrentProject].[path] & [file_name]

- โดย [file_name] คือชื่อฟิลด์ที่เก็บ path ไฟล์รูปแต่ละรูปไว้

แต่ผมไม่รู้ว่าถ้าทำกับฐานข้อมูลที่มีจำนวนมากๆ จะมีปัญหาทำให้เครื่องช้ามากน้อยแค่ไหน เพราะที่ทำนั้น ใช้ฐานข้อมูลประมาณ 1,500 record ก็จะรู้สึกหน่วงๆ หน่อยครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2368s