我在Microsoft Access中有一个表单,允许用户上传每个记录的附件。通过让用户将文件拖放到附件字段中,我想让它变得有点用户友好。这样做的最佳方式是什么/我该怎么做?
答案 0 :(得分:2)
拖放可能会更复杂,VBA代码如何操纵您想要实现的目标?这篇文章很好地参考了你想做的事情。 http://www.access-freak.com/tutorials.html#Tutorial07
答案 1 :(得分:0)
因为在搜索" MS Access拖放"时,此页面首先出现,所以我在这里添加我的部分。如果你正在使用一些很酷的UI,你可以使用.NET wrapper dll检查我的Github示例数据库。这允许您简单地调用函数并使用文件拖放功能打开filedialog。结果作为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
这里看起来像什么;
答案 2 :(得分:0)
这是一种拖放“附件”文件以用于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帮助调试了注释掉的实际文件副本。