2

我有一个带有 SQL Server 2012 后端的 Access 2010 odbc 前端。我的图像 ( .bmp) 存储为Varbinary(Max). 当我在 Access 表单中使用绑定的对象框插入图像时,图像会显示在表单上并完美报告。我有大量图片要带入 SQL,所以我在 SQL Server Management Studio 中使用了以下代码:

UPDATE dbo.Photos_Observations 
SET [Photo] = (SELECT BulkColumn 
FROM Openrowset( Bulk '\\serverIP\servername\020.BMP', Single_Blob) as MyImage) 
WHERE PhotoTableID =391

这很好用,所有 600 多张图片现在都在 SQL Server 中。但是我以这种方式添加的那些不会出现在我的访问表单或报告中。当我单击绑定对象框架时,我收到错误号 502753“Microsoft Access 与 OLE 服务器或 ActiveX 控件通信时出现问题。”

为什么它以一种方式工作而不是另一种?如何让图像显示?

4

1 回答 1

2

看起来您使用 T-SQL 将原始二进制图像数据直接从 BMP 文件批量插入到 VARBINARY 列中。因此,这些图像没有通过 Access 表单上的绑定对象框架插入图像时添加的“OLE 包装器”。

有关自动插入“OLE 包装”图像的方法,请参阅我对相关问题的回答。(这有点笨拙,但仍然比手动完成要好。)

另一种方法是使用图像控件而不是绑定对象框架,并将图像存储为原始二进制数据而不是“OLE 包装”对象。这正日益成为处理存储在数据库中的图像的首选方式。(OLE 对象可能很麻烦,尤其是在使用 Access 以外的应用程序时。)

于 2015-06-15T20:48:37.337 回答