繁体   English   中英

在 MS Access 中通过 VBA 添加附件

[英]Add attachment via VBA in MS Access

我的表格之一如下

在此处输入图片说明

它是一种在 MS Access 中制作的表单,它允许我的用户添加观察结果。 观察可能包括如图所示的附件。 我可以单击附件控件并将附件添加到弹出的弹出窗口中。 但是,可以预期的是,当我单击上表所示的“添加”按钮时,应将此附件添加到表的相应字段中。

此表单上的所有控件均未绑定。

添加按钮后面的代码如下:

Private Sub cmdAdd_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = CurrentDb
    Set rs = db.OpenRecordset("tblObservation", dbOpenDynaset)

    rs.AddNew

    rs![Artifact] = artifactId
    rs![Observation Text] = txtObservationText.Value

    'rs![Attachments] = ' not able to solve this

    rs.Update
    rs.Close

    Set rs = Nothing
    Set db = Nothing
End Sub

在移动性方面,您的要求很合理。 看一下这个链接:

http://office.microsoft.com/zh-CN/access-help/attach-files-and-graphics-to-the-records-in-your-database-HA010341505.aspx

讲得很好。 您可以阅读这篇文章的更多内容,因为它与我关于将文件保存到本地驱动器文件夹中的评论一致:

如何使用vba /宏在Access 2010中自动附加图像?

您可以使用来自Microsoft的以下参考

相关的一段代码是这样的:

'  Instantiate the parent recordset.  
Set rsEmployees = db.OpenRecordset("Employees") 

'… Code to move to desired employee 

' Activate edit mode. 
rsEmployees.Edit 

' Instantiate the child recordset. 
Set rsPictures = rsEmployees.Fields("Pictures").Value  

' Add a new attachment. 
rsPictures.AddNew 
rsPictures.Fields("FileData").LoadFromFile "EmpPhoto39392.jpg" 
rsPictures.Update 

' Update the parent record 
rsEmployees.Update 

首先,将附件控件绑定到所需表的附件字段

   Private Sub cmdAdd_Click()
           'Me.Dirty = False  'fix Error 3188 is Could not update...
            Dim db As DAO.Database
            Dim rs As DAO.Recordset
            Dim rsFiles As DAO.RecordSet2
        
            Set db = CurrentDb
            'Create a DAO Recordset from a table in the current database
            Set rs = db.OpenRecordset("tblObservation")
                           
            rs.AddNew
            rs![Artifact] = artifactId
            rs![Observation Text] = txtObservationText.Value        
    
            Set rsFiles = rs.Fields("Attachments").Value 
            'This is a piece of code to get multiple files
            For i = 0 To AttachmentControl.AttachmentCount-1
                rsFiles.AddNew
                'Attachment control is used as an uploader file 
                rsFiles.Fields("FileData").LoadFromFile  AttachmentControl.FileName(i)
            Next i
        
            rsFiles.Update 
            rsFiles.Close
        
            rs.Update
            rs.Close
        
            Set rs = Nothing
            Set db = Nothing
        End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM