กระทู้เก่าบอร์ด อ.Yeadram
2,649 4
URL.หัวข้อ /
URL
ทำปุ่มเพิ่มภาพแบบ path แล้วก็อบปี้ไฟล์ไปยังโฟลเดอร
อยากสอบถามอาจารย์ว่าถ้าจะทำปุ่มสำหรับเพิ่มภาพแบบ path เมื่อเพิ่มเสร็จให้ก็อบปี้ไฟล์นั้นไปยังโฟลเดอร์ในเครื่อง Server ที่กำหนดไว้
และปุ่มลบภาพออกก็เหมือนกัน คือเมื่อกด Remove ก็จะลบภาพนั้นออกไปจากโฟลเดอร์แชร์ทันที
ในเงื่อนไขแบบนี้จะทำได้มั้ยครับรบกวนอาจารย์ช่วยชี้แนะด้วย
และปุ่มลบภาพออกก็เหมือนกัน คือเมื่อกด Remove ก็จะลบภาพนั้นออกไปจากโฟลเดอร์แชร์ทันที
ในเงื่อนไขแบบนี้จะทำได้มั้ยครับรบกวนอาจารย์ช่วยชี้แนะด้วย
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R08446
รบกวนถามแบบโง่ๆ หน่อยนะครับเพราะผมไม่รู้เรื่องเลย
คือตอนนี้ได้ใช้โค้ดแบบข้างล่าง โดยการเพิ่มหรือลบรูปในโฟลเดอร์ก่อนแล้วค่อยมากด add เอาในฟอร์มทีหลัง
ตอนนี้ต้องการจะนำวิธีการนี้มาประยุกต์ใช้ โดยที่จะลบหรือเพิ่มรูปในโฟลเดอร์อัตโนมัติจากในฟอร์มของ Access เลย
แต่ติดปัญหาคือไม่รู้จะนำมาประยุกต์ใช้ยังไงต่อจากโค้ดข้างล่าง
รบกวนอาจารย์ให้คำแนะนำเพิ่มเติมด้วยนะครับ
คือตอนนี้ได้ใช้โค้ดแบบข้างล่าง โดยการเพิ่มหรือลบรูปในโฟลเดอร์ก่อนแล้วค่อยมากด 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 ' นี่ก็อีกคำสั่ง ก็คือสั่งลบรายการออกจากตาราง ออกจากฐานข้อมูล
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 = textbox ในฟอร์ม
table1 = ตาราง
(pic_id = 256) = field แรกหรือ field ที่เรียงลำดับ ของ ตาราง
ไม่ทราบว่าแบบนี้ถูกต้องมั้ยครับ
("picpath","Table1","pic_id = 256")
รบกวนสอบถามเรื่องตัวแปรหรือค่าที่จะนำมาแทนนี่ตามข้างบนนี้หน่อยครับอาจารย์
ตอนนี้ผมเข้าใจว่า
picpath = textbox ในฟอร์ม
table1 = ตาราง
(pic_id = 256) = field แรกหรือ field ที่เรียงลำดับ ของ ตาราง
ไม่ทราบว่าแบบนี้ถูกต้องมั้ยครับ
Time: 0.3450s
การ เก็บ 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 มันมาแล้ว)