2009-06-09 73 views
3

我正在使用Access 2007(VBA-adp)前端与SQL Server 2005后端。我有一份报告,希望将一份副本另存为一份PDF文件作为SQL Server中的二进制文件。保存访问报告为PDF/Binary

  1. 报告开业
  2. 报告关闭 - 关闭事件触发
  3. 报告保存为PDF格式并上传到SQL Server表作为二进制文件

这是可能的,我会怎样实现这一目标?

回答

4

如果在数据库表中存储二进制文件是个好主意,有不同的意见。有人说没关系,有些人更喜欢将文件保存在文件系统中,只将文件的位置存储在数据库中。

我是那些认为没关系的人之一 - 我们有一个> 440 GB的SQL Server 2005数据库,用于存储PDF文件和图像。它运行得非常好,我们没有任何问题(例如速度......通常是“文件系统”人员的主要论点)。

如果你不知道如何保存数据库中的文件,谷歌“GetChunk”和“AppendChunk”,你会发现像this one的例子。

关于数据库设计:一个只有一个ID和BLOB字段(其中PDF文件存储在)和一个用ID和过滤附加字段:
如果你把两个表这是最好的。
如果你这样做,所有的搜索和过滤都会发生在小表上,并且只有当你知道你想要加载的文件的ID时,你才会一次点击大表并加载文件。
我们这样做,就像我之前说过的 - 数据库包含近450 GB的文件,而且我们完全没有速度问题。

1

最简单的方法是将报告保存为PDF格式的磁盘(如果您不知道如何操作,我建议在MSDN论坛上使用this thread)。之后,您将需要使用ADO将使用OLE嵌入的文件导入到二进制类型的字段中。我对此很生疏,所以我不能提供具体细节,但谷歌搜索到目前为止一直存在。

我建议不要在Access数据库中存储PDF文件--Jet对数据库大小有严格的限制,如果您不小心,PDF文件可以填充该限制。更好的选择是使用OLE链接到文件,并在每次用户请求时从磁盘中检索它。

最后一点建议是使用ObjectFrame在磁盘上显示PDF,MSDN涵盖的很好here

+0

他不想将PDF保存在Access数据库中(我不建议这么做),他想将它保存在SQL Server数据库中。我看到没有问题。 – 2009-06-09 12:19:57