Trang 1 trên 1

Cách add những file được chọn từ hộp thoại open vào cơ sở dữ liệu

Đã gửi: T.Sáu 06/04/2018 2:29 pm
gửi bởi Quach Tan Quang
Mình có 1 file access có đuôi là abc.accdb trong đó có 1 table gồm các field như Maso, Tentailieu là kiểu string, và 1 field FileDinhKem là kiểu Attachment. Mình tạo 1 from trong vb để thêm dữ liệu vào table này nhưng không biết viết như thế nào để thêm được các file đã chọn trong hộp thoại open vào trong field FileDinhKem. Nhờ các anh, chị giúp dùm. Cảm ơn.

Re: Cách add những file được chọn từ hộp thoại open vào cơ sở dữ liệu

Đã gửi: T.Sáu 06/04/2018 5:34 pm
gửi bởi nhatlinh0207
Không nên làm FileDinhKem là Attachment. FileDinhKem chỉ nên là string lưu đường dẫn file thôi

Re: Cách add những file được chọn từ hộp thoại open vào cơ sở dữ liệu

Đã gửi: T.Ba 10/04/2018 8:10 am
gửi bởi Quach Tan Quang
Lưu đường dẫn nếu lỡ file đó bị xóa thì đâu mở được phải không bạn.

Re: Cách add những file được chọn từ hộp thoại open vào cơ sở dữ liệu

Đã gửi: T.Ba 10/04/2018 8:50 am
gửi bởi nhatlinh0207
Bạn phải copy file vào trong thư mục phần mềm của bạn chứ. để link bên ngoài sao đc.

Còn đây chỉ là khuyên vậy thôi để file access đỡ nặng.

Re: Cách add những file được chọn từ hộp thoại open vào cơ sở dữ liệu

Đã gửi: T.Tư 11/04/2018 8:41 am
gửi bởi FlyingFox
Muốn vậy phải dùng Ms Access Interop DAO bằng cách add Microsoft.Office.Interop.Access.Dao vào Project's References
1. Tạo một class AdoRecordSet như sau:
  1. Imports Microsoft.Office.Interop.Access.Dao
  2. Public Class AdoRecordSet
  3.     Dim dbEngine As DBEngine
  4.     Dim dbFilePath As String
  5.  
  6.     Public Sub New(filePath As String)
  7.         dbEngine = New DBEngine()
  8.         dbFilePath = filePath
  9.     End Sub
  10.  
  11.     Public Sub SetAttachFile(fieldName As String, sqlQuery As String, attachmentFile As String)
  12.         Dim db = dbEngine.OpenDatabase(dbFilePath)
  13.         Dim rs = db.OpenRecordset(sqlQuery)
  14.         If rs.EOF Then
  15.             rs.AddNew()
  16.         Else
  17.             rs.Edit()
  18.         End If
  19.         Dim rsField As Recordset2 = rs.Fields(fieldName).Value
  20.         If rsField.EOF Then
  21.             rsField.AddNew()
  22.         Else
  23.             rsField.Edit()
  24.         End If
  25.         Dim fldAttach = rsField.Fields("FileData")
  26.         fldAttach.LoadFromFile(attachmentFile)
  27.         rsField.Update()
  28.         rs.Update()
  29.         rs.Close()
  30.         db.Close()
  31.     End Sub
  32.  
  33.     Public Sub SaveToFile(fieldName As String, sqlQuery As String, saveFileName As String)
  34.         Dim db = dbEngine.OpenDatabase(dbFilePath)
  35.         Dim rs = db.OpenRecordset(sqlQuery)
  36.         If Not rs.EOF Then
  37.             Dim rsField As Recordset2 = rs.Fields(fieldName).Value
  38.             If Not rsField.EOF Then
  39.                 Dim fldAttach = rsField.Fields("FileData")
  40.                 fldAttach.SaveToFile(saveFileName)
  41.             End If
  42.             rsField.Close()
  43.         End If
  44.         rs.Close()
  45.         db.Close()
  46.     End Sub
  47. End Class
  48.  

Nếu muốn save file vào attachement vào database thì viết như sau:
  1. Dim ado = New AdoRecordSet("database.accdb")
  2. ado.SetAttachFile("column_name", "select column_name from table where id = 1", "filename1.txt")
  3.  

Nếu muốn save vào file trong máy thì viết như sau:
  1. Dim ado = New AdoRecordSet("database.accdb")
  2. ado.SaveToFile("column_name", "select column_name from table where id = 1", "filename2.txt")

Re: Cách add những file được chọn từ hộp thoại open vào cơ sở dữ liệu

Đã gửi: T.Tư 11/04/2018 7:54 pm
gửi bởi muaphonui_2010
Bạn phải copy file vào trong thư mục phần mềm của bạn chứ. để link bên ngoài sao đc.

Còn đây chỉ là khuyên vậy thôi để file access đỡ nặng.

Trường hợp như cách của bạn chỉ thì giả sử trường hợp ở máy khác (khác mạng lan) muốn mở file đó thì có được không vậy bạn?
Cảm ơn.

Re: Cách add những file được chọn từ hộp thoại open vào cơ sở dữ liệu

Đã gửi: T.Năm 03/05/2018 2:44 pm
gửi bởi nhatlinh0207
nếu như vậy thì phải làm dạng máy chủ cho ăn chắc và dễ làm, còn không dùng kiểu share thư mục rồi lưu lại thì mở mạng lan được.