Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 需要制作一个按钮创建一个记录并附加一个文件_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

Ms access 需要制作一个按钮创建一个记录并附加一个文件

Ms access 需要制作一个按钮创建一个记录并附加一个文件,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,这是我在这里的第一篇帖子,我喜欢这个网站上的人们是多么乐于助人 一般来说,我在vba方面的经验很少,所以请容忍我。在你提问之前,我已经花了很多时间在这个网站上搜索我的答案,还有msdn,但运气不好 我正在为我的工作设计一个数据库,以跟踪员工及其联系信息、培训课程和招聘文档。我在招聘表格上遇到了一个小障碍 我有一个包含员工信息的表单和一个子表单,其中包含员工所有文档的列表。每个文档都是一个单独的“documents”表上的记录,该表通过一个查询拉出来。该表有一个字段,用于输入员工姓名、文档类型(简

这是我在这里的第一篇帖子,我喜欢这个网站上的人们是多么乐于助人

一般来说,我在vba方面的经验很少,所以请容忍我。在你提问之前,我已经花了很多时间在这个网站上搜索我的答案,还有msdn,但运气不好

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

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

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

任何帮助都将不胜感激:)

更新:我在代码方面已经走了很长一段路,但是我在插入附件方面遇到了困难

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
子测试()
Dim数据库作为DAO.Database
将rst设置为DAO.Recordset2
将rsA设置为DAO.Recordset2
将fld设置为DAO.Field2
'文件路径的变量
暗礁
将f作为对象
作为字符串的Dim strFile
作为字符串的Dim strFolder
作为变体的Dim varItem
设置dbs=CurrentDb
Set rst=dbs.OpenRecordset(“文档”)
设置fld=rst(“文件”)
设置rsA=fld.Value
rst.AddNew
rst!检查员=“测试”
rst.更新
Set f=Application.FileDialog(3)
f、 AllowMultiSelect=True
如果f.显示
对于f中的每个变量,请选择编辑项
strFile=Dir(变量项)
strFolder=Left(变量项,Len(变量项)-Len(变量项))
“MsgBox”文件夹:“&strFolder&vbCrLf&_
文件:&strFile
下一个
如果结束
设置f=无
sName=strFolder和strFile
rst.编辑
rst.AddNew

rsA(“FileData”).loadfromfilesname'在我的头撞在桌子上两天后,我终于有了代码。我仍然需要进行调整,以用检查器名称和文件类型填充其他字段,但从这里开始应该很容易。我在创建记录和附加文件方面遇到了最大的麻烦

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

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