将文件拖放到 Microsoft Access 中

Posted

技术标签:

【中文标题】将文件拖放到 Microsoft Access 中【英文标题】:Drag and Drop File into Microsoft Access 【发布时间】:2014-07-23 16:02:36 【问题描述】:

我在 Microsoft Access 中有一个表单,允许用户将附件上传到每条记录。我想通过让用户将文件拖放到附件字段中来使其有点用户友好。这样做的最佳方法是什么/我该怎么做?

【问题讨论】:

【参考方案1】:

拖放可能更复杂一些,VBA 代码如何操作您希望实现的目标?这篇文章对你想做的事情有很好的参考。 http://www.access-freak.com/tutorials.html#Tutorial07

【讨论】:

【参考方案2】:

这是一种拖放“附加”文件以用于 MS Access 数据库的方法。

(当前使用 Office 365 版本 1811) MS Access 当前允许拖放到超链接字段。 使用此功能,此示例允许拖放以将附件文件存储到存储位置,同时保持到原始位置和新位置的链接。当文件被拖放到窗体上的 HyperlinkIn 框中或超链接以正常方式更改时,该事件运行。

由于 2GB 的限制,最好将文件存储在带有链接的存储位置,而不是将其存储在 .accdb 文件中。您可以将其称为数据库 + 文件服务器架构。通过使用记录号以及可选的数据库和表名以及附件号,您可以确保文件名的唯一性。

制作一个包含 3 个字段的表格和表单。 ID(自动编号) HyperlInkIN(超链接) HyperLinkOUT(超链接)

为 HyperlinkIn 表单控件的 AfterUpdate 事件插入此 VBS 代码。

Private Sub HyperlinkIN_AfterUpdate()
Dim InPath As String
Dim FileName As String
Dim OutFolder As String
Dim OutPath As String
Dim RecordNo As String
Dim FileExt As String


OutFolder = "\\networkdrive\vol1\attachments\"  'specify the output folder  

InPath = Me!HyperlinkIN.Hyperlink.Address
RecordNo = Me!ID

If Len(InPath) > 0 Then
    FileName = Right(InPath, Len(InPath) - InStrRev(InPath, "\"))  'get the file name
    FileExt = Right(FileName, Len(FileName) - InStrRev(FileName, ".") + 1) ' get the file extension with dot

'build the new path with output folder path and record number and date and extension
        OutPath = OutFolder & "Record " & RecordNo & " Attachment " & Format(Now(), "ddmmmyy") & FileExt 

    FileCopy InPath, OutPath

    Me!HyperlinkOUT = "#" & OutPath & "#"  

    MsgBox "Copied file to archives   " & vbCrLf & InPath & vbCrLf & OutPath
End If

End Sub

我对 vba 有点缺乏经验,因此可能有一些更好的方法来确保和验证成功的文件复制,但这个示例对我有用并且我很容易理解。我使用 MsgBox 来帮助调试实际文件副本已被注释掉。

【讨论】:

我试过这个,然后尝试将文件从资源管理器拖到表单中。我得到了圆圈斜线符号,这意味着我不能把它放在那里。我怀疑我遗漏了一些关于拖放的基本知识。【参考方案3】:

因为在搜索“MS Access 拖放”时此页面是第一个,所以我在这里添加我的部分。如果您想要一些很酷的 UI,您可以查看我的 Github 以获取使用 .NET 包装器 dll 的示例数据库。它允许您简单地调用一个函数并使用 file-drag-and-drop 函数打开文件对话框。结果以 JSONArray 字符串形式返回。

代码可以很简单

Dim FilePaths As String
    FilePaths = gDll.DLL.ShowDialogForFile("No multiple files allowed", False)
'Will return a JSONArray string.
'Multiple files can be opend by setting AllowMulti:=true

这里是什么样子的;

【讨论】:

以上是关于将文件拖放到 Microsoft Access 中的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能将文件拖放到 Qt 示例拖放示例中?

Word 加载项拖放到文档上

将文件路径拖放到 Java Swing JTextField

WPF:将文件拖放到整个窗口中(包括标题栏和窗口边框)

将文件拖放到 NSTableView 上?

Angular 8拖放 - 将文件或文件夹拖放到另一个文件夹中