2016-02-25 86 views
0

这是我的第一篇文章,我爱这个网站上的人是多么有帮助!需要做一个按钮创建一个记录,并附上一个文件

我对vba的使用经验很少,所以请耐心等待。在你问之前,我花了很多时间在这个网站上搜索我的答案,以及没有运气的msdn。

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

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

Here is what I have so far

我已阅读上添加这是有益的,但并没有告诉我如何创建另一个表的新记录的附件微软的文章。

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 

End Sub

+0

您需要运行插入查询并使其通过组合框更改事件触发。将它连接到按钮会更安全,这样错误地选择错误的文档将不会创建虚假记录。然后你想刷新你的表单查询源。总而言之,可能大约有6行VBA。走开,让我们知道你是否有问题。 – GavinP

+0

谢谢加文。我已经知道要使用更改事件,但它是我遇到麻烦的vba代码。因为我没有足够的声誉,所以我不能在新评论中发布我的代码。请参阅我对原文的编辑。也许你可以发现我的问题在哪里。 –

回答

0

将头撞到桌子上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 
相关问题