ทำปุ่มเพิ่มภาพแบบ path แล้วก็อบปี้ไฟล์ไปยังโฟลเดอร
กระทู้เก่าบอร์ด อ.Yeadram

 2,649   4
URL.หัวข้อ / URL
ทำปุ่มเพิ่มภาพแบบ path แล้วก็อบปี้ไฟล์ไปยังโฟลเดอร

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

และปุ่มลบภาพออกก็เหมือนกัน คือเมื่อกด Remove ก็จะลบภาพนั้นออกไปจากโฟลเดอร์แชร์ทันที

ในเงื่อนไขแบบนี้จะทำได้มั้ยครับรบกวนอาจารย์ช่วยชี้แนะด้วย

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

1 @R07158
การ browse หาไฟล์ต้นทาง - มีในกระทู้อื่นๆ แล้วลองค้นดูนะครับ
การ เก็บ path กับ filename เข้าตารางก็ใช้การสร้างสายอักขระ sql แล้ว สั่งรัน (Insert ..into..)

การก็อปปี้ไฟล์, การลบไฟล์, สร้างโฟลเดอร์, ลบโฟลเดอร์
อาจจะใช้ library อีกตัวเพิ่มเข้ามาเพื่อความสะดวก เช่น
ให้ไปเพิ่ม library ที่ชื่อ Microsoft Scripting Runtime มาครับ
ประกาศตัวแปรที่จำเป็นต้องใช้ เช่น
Dim FSO as new filesystemobject
Dim Fo as folder
Dim Fi as file

การก็อปปี้
Fso.Copyfile...................

การลบไฟล์ กรณีรู้ชื่อเต็ม
FSO.DELETEFILE....

การวนลูปค้นหาไฟล์ในโฟลเดอร์
set fo = fso.getfolder(..............)
for each fi in fo.files
   if fi.name =... then ...
next

ประมาณนี้ครับ (คำสั่งที่ผมให้ไปแค่เป็นไกด์นะครับ อาจพิมพ์ผิดพิมพ์ถูกไปบ้าง ให้ลองไปเขียนเองครับ VBA จะช่วยลิสต์คำสั่งให้อยู่แล้วครับ ถ้าเราเพิ่ม library มันมาแล้ว)
2 @R08446
รบกวนถามแบบโง่ๆ หน่อยนะครับเพราะผมไม่รู้เรื่องเลย
คือตอนนี้ได้ใช้โค้ดแบบข้างล่าง โดยการเพิ่มหรือลบรูปในโฟลเดอร์ก่อนแล้วค่อยมากด add เอาในฟอร์มทีหลัง

ตอนนี้ต้องการจะนำวิธีการนี้มาประยุกต์ใช้ โดยที่จะลบหรือเพิ่มรูปในโฟลเดอร์อัตโนมัติจากในฟอร์มของ Access เลย

แต่ติดปัญหาคือไม่รู้จะนำมาประยุกต์ใช้ยังไงต่อจากโค้ดข้างล่าง
รบกวนอาจารย์ให้คำแนะนำเพิ่มเติมด้วยนะครับ

Private Sub AddPicture_Click()
    getFileName
End Sub

Sub getFileName()
    Dim fileName As String
    Dim result As Integer
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Select Employee Picture"
        .Filters.Add "All Files", "*.*"
        .Filters.Add "JPEGs", "*.jpg"
        .Filters.Add "Bitmaps", "*.bmp"
        .FilterIndex = 1
        .AllowMultiSelect = False
        .InitialFileName = CurrentProject.path
        result = .Show
        If (result <> 0) Then
            fileName = Trim(.SelectedItems.Item(1))
            Me![ImagePath].Visible = True
            Me![ImagePath].SetFocus
            Me![ImagePath].Text = fileName
            Me![AddPicture].SetFocus
            Me![ImagePath].Visible = False
        End If
    End With
End Sub
3 @R08447
โค้ดที่คุณนำมา มันทำงานเหมือนกับชื่อของมันนั่นแหละครับ
GetFileName คือมันทำหน้าที่หาชื่อเท่านั้น

ถ้าจะนำไปประยุกต์ต่อ ก็คือเอาชื่อที่ได้จากมันนั่นแหละครับ ไปใช้กับคำสั่งอื่นๆ ที่คุณต้องการ

สมมติ จากโค้ดข้างต้น แทนที่คุณจะนำชื่อมันไป วางให้คอนโทรล
Me![ImagePath].Text = fileName
คุณก็นำมันไปเก็บไว้ในตัวแปรดีกว่า
Dim fiName as string
fiName = filename


ต่อจากนั้นคุณก็จัดการมันตามที่ต้องการด้วยคำสั่งอื่นๆ เช่นหากต้องการ คัดลอกมันจากที่ไหนก็ช่างที่คุณไปหามันเจอ คัดลอกให้มาวางไว้ที่ D:\pic

dim Fso as new filesystemobject
fso.copy fiName, "D:\pic\" & dir(filename)

ในกรณีกลับกัน หากคุณต้องการลบไฟล์นี้ จากโฟลเดอร์ D:\pic คุณก็นำชื่อมันนั่นแหละครับไปใช้อีก เช่น
fso.deletefile "d:\pic" & dir(filename)

แล้วถ้าคุณมีชื่อและพาธ อยู่ในตารางล่ะ จะทำอย่างไรกับมัน
- ก็เอาชื่อมันมาเข้าตัวแปรให้ได้ อาจจะใช้ dlookup หรืออะไรก็ได้ ล่อมันเข้ามาวางใน textbox ก่อนก็ได้ ขอให้เอาชื่อมันเข้ามาทำงานในโค้ดได้ครับ

ตัวอย่าง
dim fname as string
fname = dlookup("picpath","Table1","pic_id = 256")
fso.deletefile fname   ' แค่นี้ครับ คำสั่งลบ มันออกไปอยู่ในถังขยะคุณแล้วครับ
หรือคำสั่ง
kill fname   ' นี่ก็คำสั่งลบไฟล์เหมือนกันครับ


ถ้าคุณต้องการลบรายการออกจากตารางด้วย และลบรูปภาพด้วยคุณก็สั่งสองครั้งไงครับ

dim fname as string
fname = dlookup("picpath","Table1","pic_id = 256")
kill fname   ' 1 คำสั่ง ลบรูปภาพ ออกจากโฟลเดอร์ หรือออกจากคอมพิวเตอร์นั่นแหละครับ
fname = "delete from table1 where pic_id = 266"
docmd.runsql fname   ' นี่ก็อีกคำสั่ง ก็คือสั่งลบรายการออกจากตาราง ออกจากฐานข้อมูล
4 @R10631
("picpath","Table1","pic_id = 256")

รบกวนสอบถามเรื่องตัวแปรหรือค่าที่จะนำมาแทนนี่ตามข้างบนนี้หน่อยครับอาจารย์
ตอนนี้ผมเข้าใจว่า
picpath = textbox ในฟอร์ม
table1 = ตาราง
(pic_id = 256) = field แรกหรือ field ที่เรียงลำดับ ของ ตาราง

ไม่ทราบว่าแบบนี้ถูกต้องมั้ยครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3450s