ขอโค้ดสำหรับ ดาวโหลดไฟล์แนบ



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

22 ก.พ. 61 , 09:36:59
อ่าน 934 ครั้ง

UnKnown

คุณ ปอนด์ Original post

รบกวนอาจารย์ทุกท่านค่ะ

ขอโค้ดสำหรับดาวโหลดเอกสารไฟล์แนบจากฐานข้อมูล attachments  คะ



ตามรูป เวลาเราจะบันทึก จะต้อง ดับเบิลคลิกที่ไฟล์แนบ แล้วจะขึ้นเอกสารมาให้เราเลือก Save  อีกที

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

พอจะมีโค้ดมั้ยค่ะ

ขอบคุณคะ   
« แก้ไขครั้งสุดท้าย: 04 เม.ย. 61 , 19:58:37 โดย UnKnown »

 

23 ก.พ. 61 , 11:03:44
ตอบกลับ #1

TTT

> ขอโค้ดสำหรับ ดาวโหลดไฟล์แนบ
« ตอบกลับ #1 เมื่อ: 23 ก.พ. 61 , 11:03:44 »
ใช้โค้ดประมาณนี้ในการเซฟไฟล์ครับ แทนค่าตัวสีแดงให้ถูก
On Error GoTo Err_SaveImage
    Dim db As DAO.Database
    Dim rsParent As DAO.Recordset2
    Dim rsChild As DAO.Recordset2
    Set db = CurrentDb
    Set rs = Me.Recordset ' หรือหากฟอร์มไม่ได้ผูกกับฐานข้อมูล Set rsParent = db.OpenRecordset("ชื่อตาราง", dbOpenDynaset)
     rsParent.FindFirst "[ID] = " & Me.txt_ID ' txt_ID คือชื่อ TextBox ที่เป็น ID
'    rsParent.FindFirst "[ProductName] Like '*A*' AND [Quantity] = 15" ' หรือหากต้องการอ้างเรคคอร์ดที่เงื่อนไขอื่นๆ
    Set rsChild = rsParent.Fields("ชื่อฟิลด์ Attachment").Value
    While Not rsChild.EOF
        rsChild.Fields("FileData").SaveToFile "C:\Backup" 'พาธโฟลเดอร์ที่ต้องการเซฟไฟล์
        rsChild.MoveNext
    Wend
Exit_SaveImage:
    Set rsChild = Nothing
    Set rsParent = Nothing
    Exit Sub
Err_SaveImage:
    If Err.Number = 3839 Then
        MsgBox ("File Already Exists in the Directory!")
        Resume Next
    Else
        MsgBox "Some Other Error occured!", Err.Number, Err.Description
        Resume Exit_SaveImage
    End If

ปล. หากอยากเลือกโฟลเดอร์เองด้วยก็ต้องเขียนโค้ดเปิด Dialog Box เลือกโฟลเดอร์เพิ่มเติมอีก ปรับใช้ดูครับ
ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator link
 

28 ก.พ. 61 , 11:08:28
ตอบกลับ #2

UnKnown

> ขอโค้ดสำหรับ ดาวโหลดไฟล์แนบ
« ตอบกลับ #2 เมื่อ: 28 ก.พ. 61 , 11:08:28 »
คุณ ปอนด์ Original post

ขอบคุณ อาจารย์ TTT  มากๆ เลยนะคะ
« แก้ไขครั้งสุดท้าย: 04 เม.ย. 61 , 19:59:06 โดย UnKnown »

 

05 มี.ค. 61 , 16:00:18
ตอบกลับ #3

UnKnown

> ขอโค้ดสำหรับ ดาวโหลดไฟล์แนบ
« ตอบกลับ #3 เมื่อ: 05 มี.ค. 61 , 16:00:18 »
คุณ ปอนด์ Original post

รบกวน อีก 1 เรื่องค่ะ อาจารย์ TTT  ถ้าเราต้องการ Copy Record ทั้ง Record โดยมีไฟล์แนบของ Record  ที่ เรา Copy ติดมาด้วย ต้องทำอย่างไรค่ะ
ตอนนี้ใช้ โค้ด นี้ ในการ Copy อยู่ค่ะ

On Error Resume Next
    DoCmd.RunCommand acCmdSelectRecord
    If (MacroError = 0) Then
        DoCmd.RunCommand acCmdCopy
    End If
    If (MacroError = 0) Then
'        .AddNew
        DoCmd.RunCommand acCmdRecordsGoToNew
    End If
    If (MacroError = 0) Then
        DoCmd.RunCommand acCmdSelectRecord
    End If
    If (MacroError = 0) Then
        'DoCmd.RunCommand acCmdPaste
         
 

       End If
       
    If (MacroError <> 0) Then
        Beep
        MsgBox MacroError.Description, vbOKOnly, ""
   DoCmd.GoToRecord , , acLast
 
    End If
  DoCmd.GoToRecord , , acLast
  DoCmd.GoToControl "CNC"


แต่ปัญหาคือ จะมาเฉพาะข้อมูลที่เป็น Text ส่วน ตัว ไฟล์แนบไม่ติดมาด้วย

รบกวนอาจารย์ด้วนะคะ
« แก้ไขครั้งสุดท้าย: 04 เม.ย. 61 , 19:58:58 โดย UnKnown »

 

06 มี.ค. 61 , 10:46:21
ตอบกลับ #4

TTT

> ขอโค้ดสำหรับ ดาวโหลดไฟล์แนบ
« ตอบกลับ #4 เมื่อ: 06 มี.ค. 61 , 10:46:21 »
อื่ม! ห้ามถึงต้องก๊อปปี้เรคคอร์ดที่กำลังโฟกัสอยู่ สำเนาไปเป็นเรคคอร์ดใหม่อีกเรคคอร์ดอย่างนั้นใช่ไม๊ครับ
ลองดูโค้ดแล้ว ใช้ได้นะครับ ใช้การเรียก Command menu แบบที่ใช้ก็ใช้ได้นะครับ ลองใส่แบบนี้ดูครับ

โค๊ด: [Select]
    DoCmd.RunCommand acCmdSelectRecord
    If (MacroError = 0) Then
        DoCmd.RunCommand acCmdCopy
    End If
    If (MacroError = 0) Then
        DoCmd.RunCommand acCmdRecordsGoToNew
    End If
    If (MacroError = 0) Then
        DoCmd.RunCommand acCmdSelectRecord
    End If
    If (MacroError = 0) Then
        DoCmd.RunCommand acCmdPaste
    End If
    If (MacroError <> 0) Then
        Beep
        MsgBox MacroError.Description, vbOKOnly, ""
        DoCmd.GoToRecord , , acLast
    End If
    DoCmd.GoToRecord , , acLast
    DoCmd.GoToControl "CNC"
ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator link
 


บอร์ดเรียนรู้ Access สำหรับคนไทย