SQL Server 2012 中的照片作为 Varbinary(MAX) 在 Access 2010 中导致错误 502753
Photos as Varbinary(MAX) in SQL Server 2012 causes error 502753 in Access 2010
我有一个 Access 2010 odbc 前端和一个 SQL Server 2012 后端。我的图像 (.bmp
) 存储为 Varbinary(Max)
。当我在 Access 窗体中使用我的绑定对象框架插入图像时,图像会完美地显示在窗体和报告中。我有大量图片要导入 SQL,所以我在 SQL Server Management Studio 中使用了以下代码:
UPDATE dbo.Photos_Observations
SET [Photo] = (SELECT BulkColumn
FROM Openrowset( Bulk '\serverIP\servername0.BMP', Single_Blob) as MyImage)
WHERE PhotoTableID =391
效果很好,所有 600 多张图片现在都在 SQL 服务器中。但是我以这种方式添加的那些不会显示在我的访问表单或报告中。当我点击绑定对象框架时,我得到错误号 502753 "A problem occurred while Microsoft Access was communicating with the OLE server or ActiveX control."
为什么它以一种方式起作用而不是另一种方式?如何让图片显示?
您似乎使用 T-SQL 将原始二进制图像数据直接从 BMP 文件批量插入到 VARBINARY 列中。因此,这些图像没有在通过 Access 窗体上的绑定对象框架插入图像时添加的 "OLE wrapper"。
有关自动插入 "OLE wrapped" 图像的方法,请参阅 my answer to a related question。 (这有点笨重,但总比手工完成要好。)
另一种方法是使用图像控件而不是绑定对象框架,并将图像存储为原始二进制数据而不是 "OLE wrapped" 对象。这越来越成为处理存储在数据库本身中的图像的首选方式。 (OLE 对象可能很麻烦,尤其是在使用 Access 以外的应用程序时。)
我有一个 Access 2010 odbc 前端和一个 SQL Server 2012 后端。我的图像 (.bmp
) 存储为 Varbinary(Max)
。当我在 Access 窗体中使用我的绑定对象框架插入图像时,图像会完美地显示在窗体和报告中。我有大量图片要导入 SQL,所以我在 SQL Server Management Studio 中使用了以下代码:
UPDATE dbo.Photos_Observations
SET [Photo] = (SELECT BulkColumn
FROM Openrowset( Bulk '\serverIP\servername0.BMP', Single_Blob) as MyImage)
WHERE PhotoTableID =391
效果很好,所有 600 多张图片现在都在 SQL 服务器中。但是我以这种方式添加的那些不会显示在我的访问表单或报告中。当我点击绑定对象框架时,我得到错误号 502753 "A problem occurred while Microsoft Access was communicating with the OLE server or ActiveX control."
为什么它以一种方式起作用而不是另一种方式?如何让图片显示?
您似乎使用 T-SQL 将原始二进制图像数据直接从 BMP 文件批量插入到 VARBINARY 列中。因此,这些图像没有在通过 Access 窗体上的绑定对象框架插入图像时添加的 "OLE wrapper"。
有关自动插入 "OLE wrapped" 图像的方法,请参阅 my answer to a related question。 (这有点笨重,但总比手工完成要好。)
另一种方法是使用图像控件而不是绑定对象框架,并将图像存储为原始二进制数据而不是 "OLE wrapped" 对象。这越来越成为处理存储在数据库本身中的图像的首选方式。 (OLE 对象可能很麻烦,尤其是在使用 Access 以外的应用程序时。)