访问2007年到SQL服务器文件上传?

问题描述:

我有一个Access 2007数据库与附件设施。目前,客户端可能会在本地上传文件,但无法在其他地方访问文件。在基于Web的系统上开发时,我已经能够进行类似的操作,但是我似乎无法在Access 2007数据库上执行此操作,并且我不确定这是否可行。基本上,系统需要在线连接到SQL服务器并上传文件,尽管数据库本身并不在线。我会很感激任何指针!访问2007年到SQL服务器文件上传?

+0

您的术语非常非常混乱。目前还不清楚在一个文件中是否有非分离的Access ACCDB表格和表单等,或者是否有ACCDB前端到SQL Server数据库。 – 2010-09-20 21:35:46

+0

这是一个Access ACCDB,通过说'系统需要连接到在线sql服务器'我认为它很明显,它目前没有连接到sql服务器。谢谢回复。 – 2010-09-27 09:28:06

+0

因为你的最后一句话并不能解决“数据库”这个词的含义 - 你的意思是SQL Server还是ACCDB文件? – 2010-09-27 18:17:30

我已经遇到过这种情况。这里是你的选择:

  1. 在共享使用ACCDB访问附件栏 - 将无法正常工作“在线”非常好,但你可以停放您的局域网上的ACCDB并使其独立的后端ACCDB所有人共享。您的帖子没有说明您的用户是本地用户还是“在线”用户 - “在线”是否意味着网络。

  2. 使用SQL-Server中的VarChar(Max)(aka BLOB)字段来存储附件。但是,您无法从Access轻松填充这些内容。假设您控制运行SQL Server的服务器,您可以使用Access中的ADO使用bulkinsert T-SQL命令上传VarChar(Max)。这工作得很好,而且很简单。

  3. 创建一个上传网页。在VBA中使用iExplorer自动化(即创建一个iExplorer对象)导航到该页面,填写并按上传按钮。出于安全原因,您不能使用自动化来填充文件上传控件,但可以使用sendkeys。这并不完美 - 有时你必须重复这个过程一两次,但如果它是由可以验证其正常工作的用户调用的,那么它工作得非常好。这就是我所做的 - 最简单的解决方案。

  4. 最好的解决方案可能是使用WCF创建一个Web服务来处理上传。有很多关于如何编码和解码字节数组以将文件存储为VarChar(Max)的文章。它工作得非常好。不幸的是,据我所知,Access无法直接使用Web服务,因此您必须编写一个小型vb.net程序来执行此操作,并从Access中调用它。

  5. 您可以将文件/附件存储在SQL/Server之外 - 仅存储在服务器上,并且只存储Access中这些文件的链接/ URL。你可以让每一个都可以启动。这很容易但很难控制安全性。

  6. 您可以使用Sharepoint存储/共享附件。这可以很好地工作,取决于附件的大小和连接性。它的构建是为了支持这一点。

Access在一条记录中允许多个附件。 SQL/Server不支持这一点。因此,如果您可以将您的ACCDB分为仅用于程序的前端和用户可共享以包含数据/附件的后端ACCDB,那么这是迄今为止最简单的答案。