SSRS:显示来自数据库中 varbinary 列的图像

SSRS: Display image from varbinary column in the database

如果我遗漏了什么,我深表歉意,但从我在 SOF 和其他网站上找到的内容来看,我找不到我的问题已被讨论过。我需要将存在于 SQL 服务器中的图像显示为 varbinary 列。

SELECT 
    photo = CASE WHEN event_id = 47 THEN e.data ELSE NULL END

这是前 8 个字节:0x2D00000030303030 有人告诉我这是 JPEG。

到目前为止,我的尝试包括以下 SSRS 图像设置:

但是,我仍然在报告中看到红色的 X。

现在,我已经看到描述将图像放在单独的 table 中的页面,但我认为这对我的目的不起作用,因为我需要在同一个 tablix 中显示图像仅具有特定行。我目前对 SSRS 的理解假定每个 tablix 只有一个数据集,所以我不能将两个 table 组合到一个 tablix 中。解决方案是使用这种单独的 table 方法,然后加入我现有的数据集吗?


编辑 1: 在显示图片时,我有错误的红色 X,其中不应该显示任何内容,可能是因为我使用的表达方式。注意:原来是 base64,我必须从中解码。 System.Convert.FromBase64String(Fields!photo.Value)

我已尝试使用以下表达式来删除 X,但它不起作用:=iif(isnothing(Fields!photo.Value)=1,nothing,System.Convert.FromBase64String(Fields!photo.Value))

有什么想法吗?

尝试在“使用此字段”表达式中使用以下内容

=System.Convert.ToBase64String(Fields!myImageColumn.Value)

我不知道你的图片是否属于这种类型,但我在很多年前遇到过同样的问题,并使用上面的方法进行了转换。另外,请尝试将 MIME 类型更改为 image/png,以防您被误导。

从 OP 更新后编辑

既然图像问题已经解决,您仍然会在没有图像可显示的地方看到一个红色的 x。你可以尝试两件事。

  1. 根据图像列内容(是否为空)设置图像占位符的可见性。我不明白为什么行不通,但以防万一...
  2. 向数据库添加一个空图像,如果不存在实际图像,则使用该图像。