使用 vs 表单将 pdf 文件存储在 MS Access 附件字段中

问题描述

我正在使用 Visual Studio 2019 和 MS Access 2013 数据库。 我想在 Access 数据库列中存储多个 PDF 文件。 该列被定义为附件类型。

首先,我尝试使用 OLE DB 和 sql 命令,但出现错误“更新和删除命令无法与多值字段一起使用”。

然后我使用DAO来处理多值字段。现在我收到另一个错误“无法读取数据库格式”

我正在使用与下面完全相同的代码。我的数据库是 *.accdb。我的操作 系统是Windows 10 64位。 Visual Studio 2019 和 MS Access 都是 32 位。我已经在应用程序属性中将平台更改为 x86。有什么好主意吗?谢谢

Private Sub AddAttachment(ByVal Files() As String)
    Const Caller = "AddAttachment"
    Dim dbe = New Microsoft.Office.Interop.Access.Dao.DBEngine()
    Dim db As Microsoft.Office.Interop.Access.Dao.Database
    db = dbe.OpenDatabase(dbPath)
    Try
        Dim rstMain As Microsoft.Office.Interop.Access.Dao.Recordset
        rstMain = db.OpenRecordset("SELECT ID,fieldName FROM tableName WHERE ID = " + (dt.Rows(currentRow).Item("ID").ToString),Microsoft.Office.Interop.Access.Dao.RecordsetTypeEnum.dbOpenDynaset)
        If (rstMain.EOF) Then
            rstMain.AddNew()
            rstMain.Fields("ID").Value = 1
        Else
            For Each value As String In Files
                rstMain.Edit()
                Dim rstAttach As Microsoft.Office.Interop.Access.Dao.Recordset2
                rstAttach = rstMain.Fields("ATTACHMENTS").Value
                rstAttach.AddNew()
                Dim fldAttach As Microsoft.Office.Interop.Access.Dao.Field2
                fldAttach = rstAttach.Fields("FileData")
                fldAttach.LoadFromFile(value)
                rstAttach.Update()
                rstAttach.Close()
            Next
            rstMain.Update()
            rstMain.Close()
        End If

    Catch ex As Exception
        If Err.Number <> 3820 Then
            MsgBox(ex.Message)
        Else
            MsgBox("File of same name already attached",MsgBoxStyle.Critical,"Cannot attach file" & Caller)
            MessageBox.Show(ex.Message)
        End If

    End Try
End Sub

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)