เรียกรูปภาพจาก path ที่เก็บไว้ในตาราง
กระทู้เก่าบอร์ด อ.Yeadram

 2,633   19
URL.หัวข้อ / URL
เรียกรูปภาพจาก path ที่เก็บไว้ในตาราง

ผมมีตรางชื่อ table1 เก็บ path ไว้ที่ ฟิลด์ File_path โดยสินค้าบันทึกเป็น ID
อยู่ในฟิลด์ PID

ผมต้องการเปิด Form1 แล้วโชวรูปที่ อยู่ใน File_path โดยรูปนั้น ตรงกับรหัสสินค้า

ต้องเขียนคำสั่งยังงัยครับ

สมมุติให้คอนโทลรูปภาพชื่อ image1

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

1 @R15888
เบื้องต้นผมลองใช้ Dlookup มันก็ออกมาได้ตามที่ต้องการครับ แต่ไม่รู้ว่ามันมีคำสั่งที่ดีกว่ามั้ย อยากได้แบบอื่นนะครับ

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

Private Sub SelectFile_Click()
    Dim CaseDatabase As Database
    Dim DepositRecord As Recordset
    Dim strFileType As String, strFileTypeDesc As String
    Dim strPictFile As String
    
    strFileType = "*.bmp;*.jpg;*.gif;*.tif"
    strFileTypeDesc = "Pict Files (*.bmp,*.jpg,*.gif,*.tif)"
    strPictFile = GetOpenFile(strFileType, strFileTypeDesc) 'ตรงนี้เป็นฟังชั่นที่อยู่ในโมดุล
    Set CaseDatabase = CurrentDb()
    Set DepositRecord = CaseDatabase.OpenRecordset("DEPRECIA")
    If DepositRecord.NoMatch = True Then
            DepositRecord.AddNew
    Else
            DepositRecord.Edit
    End If
    If strPictFile <> "NoFile" Then
        DepositRecord.Fields("ImageFile_path").Value = strPictFile
    End If
            DepositRecord.Update
End Sub


ฟิลด์ที่เป็นรหัสสินค้าชื่อ PID ครับ
2 @R15891
ตามโค้ด น่าจะขาดบรรทัด .FindFirst นะครับ

Set DepositRecord = CaseDatabase.OpenRecordset("DEPRECIA")
DepositRecord.FindFirst "ImageFile_path", "DEPRECIA", "เงื่อนไขที่จะหาเรคอร์ดที่ต้องการ"
3 @R15898
อาจารย์ครับ มันขึ้น Error แบบนี้

4 @R15899
เพราะไม่ได้ใส่ "เงื่อนไขที่จะหาเรคอร์ดที่ต้องการ" ครับ
5 @R15900
ปกติคุณ Un ใช้วิธีในการเขียน code แบบไหน เพิ่มเติมแก้ไขข้อมูลครับ แนะนำว่าใช้วิธีที่ถนัดครับ ส่วนผมถนัดใช้ DoCmd.RunSQL มากกว่า Recodset.Add, Edit
ถ้าจะให้ตอบที่ถูกต้องได้ คงต้องลอง code ก่อน (เผอิญว่าช่วงนี้เงลาไม่ค่อยอำนวยเท่าไร)
6 @R15904
อาจารย์สันติสุข ผมใส่เงื้อนไขแล้วครับมัน Error ผมลองเอาออกมันก็ยังเหือนเดิม แบบที่โพสครับ
อาจารย์พิชัย ผมไม่ถนัดโคตครับ ผมมั่วเอา มาผสมกัน เดาๆ คำสั่งครับ ลองลบบรรทัดนั้น
บรรทัดนี้ แล้วแก้ไปเรื่อยๆ ส่วนใหญ่จะได้ แต่บางครั้งไม่ได้ก็เข้ามาถามอาจารย์ครับ
7 @R15905
เอาคำสั่งเต็มๆที่มีเงื่อนไขมาให้ดูหน่อยสิครับ แล้วแน่ใจหรือไม่ว่า DepositRecord เป็น Recordset ของ DAO ไม่ใช่ ADO
8 @R15906
DepositRecord.FindFirst "ImageFile_path", "DEPRECIA", "PID=PID"

PID เป็นชื่อฟิลด์ และชื่อ คอนโทลครับ

DepositRecord.FindFirst "ImageFile_path", "DEPRECIA", "Me.PID=PID"

แบบนี้ก็ลองแล้วครับ Err เหมือนข้างบนครับ

9 @R15907
เพิ่มเติมครับ DAO กับ ADO ผมก็ไม่รู้จักครับ ผม ลอกคำสั่งเค้ามาทั้งหมด
10 @R15911
โอเค ผมลองเอาคำของอาจารย์พิชัยมาคิดครับ เลยนั่งคิดว่าเราเข้าใจแบบไหน ก็ทำแบบนั้น ผมนึกถึงวฟอร์มที่ผมหาเรคคอด แล้วเอามาประยุกต์ ได้เป็นแบบนี้ครับ

Private Sub SelectFile_Click()
    Dim strFileType As String, strFileTypeDesc As String
    Dim strPictFile As String
    strFileType = "*.bmp;*.jpg;*.gif;*.tif"
    strFileTypeDesc = "Pict Files (*.bmp,*.jpg,*.gif,*.tif)"
    strPictFile = GetOpenFile(strFileType, strFileTypeDesc)
    If strPictFile <> "NoFile" Then
        Forms!fDurable!ImageFile_path = strPictFile
    End If
        Me.Form.Refresh
End Sub


ผมเพิ่มแค่ Forms!fDurable!ImageFile_path = strPictFile ก็ใช้ได้เลย
ก่อนหน้านี่ก็ ลบๆ เพิ่มๆ อยู่นาน ถ้ามีอะไรแนะนำ ฝากอาจารย์ด้วยครับ

11 @R15912
ที่ถูกต้อง ต้องเป็น

DepositRecord.FindFirst "ImageFile_path", "DEPRECIA", "PID = '" & Me.PID & "'"
12 @R15913
มันขึ้น Err ที่ FindFirst เหทมือนเดิมครับ
13 @R15914
ลองเปลี่ยนเป็น

Dim CaseDatabase As DAO.Database
Dim DepositRecord As DAO.Recordset
14 @R15915
เหมือนเดิมครับอาจารย์
15 @R15919
หมดปัญญา ... ลองส่งเข้า web board email ครับ
16 @R15922
ส่งเข้าบอร์ดแล้วครับอาจารย์



ในวงกลมคือ ปุ่มที่ถามครับ
17 @R15923
อืม...สงสัยผมจะสมองเสื่อมซะแล้ว ดันไปจำเอา syntax ของ DFirst มาใช้แทนไปเสียแล้ว ที่ถูกคือ DepositRecord.FindFirst "NOID = '" & Me.NOID & "'" แค่นี้เองครับ

18 @R15924
จากที่เขียนบอกมาว่าไม่เข้าใจในคำสั่งแต่ละคำสั่ง อยากแนะนำว่า ต้องเห็นภาพแผนภูมิรวมของ object (เช่นตัว Access เอง หรือตัว DAO http://allenbrowne.com/ser-04.html, ADO เป็นต้น) ว่ามันแตกแขนงจากบนลงล่าง (เป็นเหมือนแผนภูมิองค์กร) มี object อะไรบ้าง แต่ละ object ก็จะมี property เพื่อกำหนดคุณสมบัติ   จะมี method เพื่อสั่งให้ object ทำอะไรบ้าง   และอาจจะมี event เพื่อเป็นแหล่งให้เราได้ใส่โค้ดเมื่อเกิดเหตุการณ์อะไรขึ้นกับ object http://msdn.microsoft.com/en-us/library/office/dn124645.aspx จริงๆใน Access Help (F1) จะมีเรื่องพวกนี้ใส่ไว้อยู่แล้ว แต่เราก็สามารถหาจาก msdn.microsoft.com ได้เช่นกัน ผมว่าเวอร์ชั่นเก่าๆ เช่น Access XP จะเขียนอธิบายให้เห็นรูปภาพและมีรายละเอียดดีกว่า Access เวอร์ชั่นใหม่ๆ ซึ่งเขาจะไม่มานั่งอธิบายซ้ำอีกแล้ว เขาจะลงรายละเอียดเฉพาะสิ่งที่มีใหม่ในเวอร์ชั่นนั้นๆเท่านั้น ลองศึกษาดูนะครับ
19 @R15926
ขอบพระคุณอาจารย์สันติสุขที่ ให้ความรู้แบบถูกๆ อีกทีครับ เพราะผมมั่วจนได้อะครับ^^
เรื่องพวกนี้ถ้าเข้าใจ เอามาทำประโยชน์ได้มากมายเลยครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2773s