使用Microsoft Access创建文档数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Microsoft Access创建文档数据库相关的知识,希望对你有一定的参考价值。

我试图在数据库中创建一个表,该表存储与数据库“相关”的所有文档。我真正想做的是上传一个文件并使用vba代码将文件复制到网络位置,通过连接文档表格中的两个字段来重命名文件(消除了外部位置重复文件名的问题),然后将文件名和文件路径存储在表中的文件路径字段中。我很新,访问和vba所以我很难让一切工作。我目前的代码如下:

Option Compare Database

Private Sub Command15_Click()
Dim f As Object

Set f = Application.FileDialog(3)

f.AllowMultiSelect = False

If f.Show Then
    For i = 1 To f.SelectedItems.Count
        sFile = Filename(f.SelectedItems(i), sPath)
        MsgBox sPath & "---" & sFile
    Next
End If

End Sub

Public Function Filename(ByVal strPath As String, sPath) As String
    sPath = Left(strPath, InStrRev(strPath, ""))
    Filename = Mid(strPath, InStrRev(strPath, "") + 1)
End Function

我似乎无法处理如何移动,通过连接表单中的两个字段重命名,或将路径存储在表的路径字段中。我去过以下地点以获取我能提供的信息

ms access browse for file and get file name and path

VBA to copy a file from one directory to another

我目前正在使用Microsoft Access 2010,由于数据库大小限制,我不希望使用文件附件字段类型。目前我按下一个按钮,文件浏览器似乎导航到正在上传的文件,路径和文件名输入到字符串中。在此之后我迷失了。如果需要任何其他信息,请告诉我。在此先感谢您的帮助。

答案

我相信你管理文件的方法是正确的。在大多数情况下,当文件系统更适合这项工作时,将文档存储在数据库本身中没有多大意义。

你正在做的事情是相当简单的,但主要的复杂性将来自对各种路径和文件名的正确管理,并从中提取正确的信息。

如果你没有使用一些辅助函数来剖析和重构路径的各个部分,那么它会变得棘手。

我创建了一个具有一些功能的sample database。可能不完全符合您的需求,但您可以轻松地使用它来满足您的特定情况。

示例数据库包含一个Tools VBA模块,该模块具有一些将Path分成其组成部分的有用功能。

基本上,数据库有2种形式。

主窗体允许您设置要保存文件的网络路径。然后,您可以选择与文档关联的预定义帐号(在Account表中列出),然后单击上载按钮。

这将在Document表中创建一个新记录,并打开一个表单,您可以在其中编辑文档标题并单击按钮将文件上载到服务器。

用户选择的文件在路径转换后将复制到服务器。我假设文件将保留其原始扩展名,文件名将重命名为保存文件信息的ID记录的Document(如5845.pdf),并且文件保存在服务器上的文件夹将是帐号,以便用户选择的源文件

C:UsersuserDesktopSuperSecretFile.pdf

将被保存为,例如:

\docserverfiles123-555475845.pdf

主窗体还允许您更新现有记录,从服务器打开文件,打开文件所在的服务器文件夹,甚至将服务器文件复制回用户计算机上的文件原始名称。

我会让你玩弄它。如果您有任何问题,请告诉我。

以上是关于使用Microsoft Access创建文档数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 Microsoft Access 数据库创建 ASP.NET 网站时出错

Microsoft Access 2007 - 如何更改数据库路径

使用 installshield 创建安装文件时 Windows 窗体的 Microsoft Access 数据库的位置

如何在 C# 中创建 Microsoft Access 数据库? [复制]

Microsoft access slider 6.0 根据查询创建最大值和最小值

如何将 sql server 链接到 Microsoft Access?