【问题标题】:Need to make a button create a record and attach a file需要制作一个按钮创建记录并附加文件
【发布时间】:2016-06-09 00:07:21
【问题描述】:

这是我在这里的第一篇文章,我喜欢这个网站上人们的乐于助人!

总的来说,我对 vba 的经验很少,所以请多多包涵。在你问之前,我已经花了很多时间在这个网站以及 msdn 上寻找我的答案,但没有运气。

我正在为我的工作设计一个数据库,以跟踪员工及其联系信息、培训课程和招聘文档。我在招聘表格上遇到了一个小障碍。

我有一个包含员工信息的表单和一个包含所有文档列表的子表单。每个文档都是单独的“文档”表中的一条记录,该表是通过查询提取的。该表包含员工姓名、文档类型(简历等)和附件本身的字段。我有一个包含文档类型列表的下拉框。当我从组合框中选择一个选项时,我希望它使用显示的当前员工的员工姓名在“文档”表中创建一个新记录,从组合框中选择文档类型,然后打开选择文件对话框.

Here is what I have so far

我已阅读 microsoft 关于添加附件的文章,该文章很有帮助,但没有告诉我如何在另一个表上创建新记录。

https://support.office.com/en-us/article/Attach-files-and-graphics-to-the-records-in-your-database-bced3638-bfbc-43f0-822d-374bca2e6b40?CorrelationId=5332de93-8a42-4f76-bb47-c196bc1ce75b&ui=en-US&rs=en-US&ad=US

任何帮助将不胜感激:)

更新:我在代码方面取得了长足的进步,但我无法插入附件

Sub test()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset2
Dim rsA As DAO.Recordset2
Dim fld As DAO.Field2

'variables for file path
Dim sName
Dim f As Object
Dim strFile As String
Dim strFolder As String
Dim varItem As Variant

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("documents")
Set fld = rst("doc")
Set rsA = fld.Value
rst.AddNew
rst!inspector = "test"
rst.Update

    Set f = Application.FileDialog(3)
        f.AllowMultiSelect = True
        If f.Show Then
            For Each varItem In f.SelectedItems
                strFile = Dir(varItem)
                strFolder = Left(varItem, Len(varItem) - Len(strFile))
                'MsgBox "Folder: " & strFolder & vbCrLf & _
                    "File: " & strFile
            Next
        End If
        Set f = Nothing
        sName = strFolder & strFile
rst.Edit
rst.AddNew
rsA("FileData").LoadFromFile sName  ' <<<this is where i get stuck
rsA.Update
rst.Update

MsgBox ("done") 'test

结束子

【问题讨论】:

  • 您需要运行一个插入查询并让它被组合框更改事件触发。将它附加到按钮上会更安全,这样错误地选择错误的文档就不会产生虚假记录。然后,您需要刷新表单查询源。总而言之,大概6行VBA。试一试,如果您有问题,请告诉我们。
  • 谢谢加文。我已经知道使用更改事件,但我遇到问题的是 vba 代码。因为我没有足够的声誉所以我不能在新评论中发布我的代码。请参阅我对原始帖子的编辑。也许你能发现我的问题在哪里。

标签: ms-access vba ms-access-2010


【解决方案1】:

在我的头撞在桌子上 2 天之后,我终于有了代码。我仍然需要进行调整以使用检查员名称和文件类型填写其他字段,但从这里开始应该很容易。我在创建记录和附加文件时遇到了最大的麻烦

Sub test()

Dim dbs As DAO.Database
Dim tbl As DAO.Recordset2
Dim field As DAO.Recordset2

'variables for file path
Dim sName
Dim f As Object
Dim strFile As String
Dim strFolder As String
Dim varItem As Variant

Set db = CurrentDb
Set tbl = db.OpenRecordset("documents")

    'get file path string
    Set f = Application.FileDialog(3)
        f.AllowMultiSelect = False
        If f.Show Then
            For Each varItem In f.SelectedItems
                strFile = Dir(varItem)
                strFolder = Left(varItem, Len(varItem) - Len(strFile))
            Next
        End If
        Set f = Nothing
        sName = strFolder & strFile

    tbl.Edit
    tbl.AddNew 'add a new entry to the table
    tbl!inspector = "test"

    Set field = tbl.Fields("doc").Value
    field.AddNew 'add an attachment to the record
    field.Fields("FileData").LoadFromFile sName
    field.Update
    tbl.Update




End Sub

【讨论】:

    猜你喜欢
    • 2011-02-06
    • 1970-01-01
    • 2010-11-20
    • 2021-06-18
    • 2020-11-22
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 2016-02-26
    相关资源
    最近更新 更多