首页 > 解决方案 > varbinary 数据类型如何存储图像以供用户在 Access 前端查看?

问题描述

我做了一些研究,网络把我带到了各个地方,但我仍然没有找到合适的解决方案或指导我想要实现的目标。

我阅读了与我所要求的内容类似的帖子。除了 #php 在 SQL Server 中检索图像(varbinary)

更新:“常规”方式是创建文件目录和文件路径。这是我为用户启动并运行前端的初始方法。我的 sup 实际上建议我使用这种哈希方法胡说八道,他甚至无法向我正确解释。

用户必须能够在表单上插入图像,同时生成显示图像的报告。

varbinary 如何为我想要实现的目标链接 sql 和 Access?我目前正在玩我的开发来解决它。

任何澄清?在我第一次编辑之后,我没有其他方法可以提出这个问题。

这是表格 图片字段是 OLE 对象类型,因为 SQL 数据类型是 varbinary。 我认为这就是 Access 识别它的方式。

对于每个表单条目,用户应该插入一张图片来支持调查结果。

标签: sql-serverms-accesshashvbavarbinary

解决方案


SQL Server 中的VARBINARY字段是存储二进制数据的字段,常用于存储文件。您可以在此字段中放置整个文件。

如果您VARBINARY在 SQL Server 中有一个字段,并在 Access 中创建一个链接表来访问该字段的表,它会被解释为 OLE 对象,因为 OLE 对象也是二进制数据。

您可以使用 Access 中的绑定对象框架控件将图像保存到 OLE 对象中,既可以作为图像(可显示),也可以作为包。这不需要任何代码。您可以右键单击字段 -> 插入对象 -> 位图图像以将位图图像插入 OLE 字段。但是,这会将 OLE 对象数据与图像数据一起存储,这使得使用代码非常难以使用,并且在非 vba 应用程序中几乎是不可能的。在我看来,只有当您确定要在数据库的整个生命周期内坚持使用 Access 时,使用这种方法才是合理的。

我在这里分享了一个使用 VBA 代码和 OLE 对象的示例但它使用了执行 GUI 操作的 hacky 代码。移植到其他应用程序几乎是不可能的。我建议您改用下一种方式。

或者,您可以直接将二进制数据存储在 OLE 对象/Varbinary 字段中。这使得处理使用 VBA 代码或任何未来应用程序变得更加容易,因为它只是存储在字段中的文件数据,没有存储 OLE 对象数据。我已共享代码以在字段中加载二进制数据并将其保存回磁盘。

如果您只是处理二进制图像数据,这个难题的难点在于向用户显示图像。我在这里分享了 3 种方法,其中一种方法的代码。但是,这是相当复杂的 VBA 代码。


推荐阅读