正在Microsoft Access中读取SQL FileTable数据



我目前正在进行一个项目,创建一个关系数据库,该数据库除了标准数据外,还需要具有与每个记录相关的附件。

数据库本身将基于Microsoft SQL Server,以Microsoft Access(2016(作为前端。

在收到之前问题的一些建议后,我认为使用FileTable将是最好的选择。

其想法是,为每个记录自动生成的ID将自动向文件表插入相应的目录,然后用户可以访问该目录来删除或读取文件。

我能够设置FileTable,只要我通过SSMS或目录使用它,它就可以正常工作。

我认为这个想法应该有效,但我有一些问题:

  • 我很确定我需要将Access和SQL之间的连接设置为OLEDB而不是ODBC,但我似乎无法在Access中找到直接的方法。我能够弄清楚如何列出提供商等,但不知道该把它放在哪里
  • 也许与前一点有关,但我无法以允许编辑的方式加载表。理想情况下,我认为只要创建了唯一的ID,就可以将ID作为"is_directory=1"插入到表中,但Access似乎不喜欢filepath(大型二进制对象(是关键

这些是我看到的错误:

  • 尝试通过ODBC连接加载文件表时:'索引或的定义中的字段定义"path_locator"无效关系。">

    尝试访问access中的file_stream/path_locator时:"AMicrosoft Access与通信时出现问题OLE服务器或ActiveX控件。关闭OLE服务器并重新启动在Microsoft Access之外。然后在中重试原始操作Microsoft Access。'

如有任何帮助,我们将不胜感激,如果有什么我可以澄清的,请告诉我。

所以我最终做了一点变通办法。

基本上,我使用了下面的vba代码来制作它,这样Access就会自动制作一个带有ID名称的目录(除非它已经存在(,然后打开同一个目录。

这实现了我试图在不需要直接连接到FileTable的情况下完成的相同任务。

函数在指定字符串处创建一个新目录。按钮单击命令将该功能用于指定的父目录,新文件夹以当前记录的唯一标识符命名(如果不存在(。然后打开该文件夹,以便添加附件等。

Sub MakeFolder(strPath As String)
If Dir(strPath, vbDirectory) > vbNullString Then
Exit Sub
End If
MkDir strPath
End Sub
Private Sub Command5_Click()
MakeFolder "\ServerNameMSSQLSERVERFileStreamDocumentStore" & Me.ID
Shell "explorer.exe" & " " & "\ServerNameMSSQLSERVERFileStreamDocumentStore" & Me.ID, vbNormalFocus
End Sub

最终结果会出现在SQL文件表中,正如我最初所希望的那样。

最新更新