reporting-services - SSRS参数和图像怎么了?

标签 reporting-services parameters ssrs-2012 varbinary

我正在努力在 SSRS 中设置报告。我们的报告有些灵活,我希望根据参数动态选择封面图像。

这是我所拥有的:

在我们的报告数据库中,我设置了一个图像表。为了简单起见,我们假设我有三列:

ImageName, ImageType, and Image.

名称和类型均为 varchar,而 ImageType 为 varbinary。我已将我们计划使用的图像及其名称和关联类型上传到表中。

在我的报告中,我有一个数据源和一个数据集,用于引入上面的表格和列。

我还有一个名为“ImageName”的参数。我已将此参数设置为使用“Image”(来自上述表格)作为其值字段,并且标签字段设置为“ImageName”。

在报告本身上我有一个图像...控件?报告元素?不知道该怎么调用它,但我已经设置了一个图像。图像源设置为“数据库”,MIME 类型使用查找函数根据Parameters!ImageName.Label 参数从数据集中提取适当的图像类型 - 这部分工作很不错 - 我正在返回正确的 MIME每次都输入。

什么不起作用,但我希望应该起作用,是设置图像本身。对于“选择图像源:”下的“使用此字段”字段,我尝试了 =Parameters!ImageName.Value 但没有成功,也尝试了基于 ImageName.Label 的查找图像数据集。似乎都不起作用。

当我尝试使用参数值时,出现错误

[rsInvalidDatabaseImageProperty] The value of the ImageData property for the image 'ImageControlName' is "=Parameters!ImageName.Value", which is not a valid ImageData.

我从 lookup 方法中得到了相同的错误消息,它只是将查找代码替换为上面的Parameters!ImageName 代码。

如果我尝试检查上面的查找返回的类型,我只会收到错误。对于参数,如果我检查类型,我会得到 System.String 所以我决定将其打印出来,显然 Parameters!ImageName.Value 的值是 System.由于某种原因,字节[]

我可以使用 First() 函数获取要显示的图像,但我需要能够选择该图像。我想我可能需要过滤一下。 First() 的返回类型为 System.Byte[],这看起来很合理。我只是不明白为什么我的参数以字符串形式返回图像数据列的类型,而不是图像列本身的数据。

那么我该如何让它工作呢?过滤我的数据集是我唯一的选择吗?或者有没有办法让参数工作或获得一些函数来让我选择合适的图像?

最佳答案

错误的原因是 ParametersFirst 返回的数据类型有关。

对于返回的Parameters数据类型为文本类型,它不是有效的图像数据类型,因此会出现错误。

对于 First 函数,它根据表达式类型返回数据类型,并返回图像的正确数据类型并显示图像。

Per Microsoft Parameter Data Type :

A report parameter must be one of the following data types:

  • Boolean. The user selects True or False from a radio button.
  • DateTime. The user selects a date from a calendar control.
  • Integer. The user types values in a text box.
  • Float. The user types values in a text box.
  • Text. The user types values in a text box.

When available values are defined for a parameter, the user chooses values from a drop-down list, even when the data type is DateTime.

Per Microsoft First function data type:

Return Type
Determined by the type of expression.

您获得过滤数据集所需的正确图像是正确的。

  • 创建提供 ImageName、ImageType 和 Image 的数据集。
  • 基于图像参数过滤ImageName上的数据集。
  • 现在使用以下表达式来获取正确的图像数据。

    =Fields!Image.Value

关于reporting-services - SSRS参数和图像怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34889105/

相关文章:

reporting-services - SSRS表达式-如果为空值,则返回0而不是空白

c++ - 为什么函数调用中的可变数组长度可以在 C 中使用,但在 C++ 中不能使用?

arrays - C 中函数参数中的固定数组或指针之间的区别?

reporting-services - SSRS 中总计的舍入问题

reporting-services - 在 SSRS 中隐藏列

sql-server - 如何从报告服务配置管理器中删除报告服务器 Web 服务 URL

sql-server - 过程或函数指定的参数过多 SSRS

reporting-services - 为什么我的 SSRS 自定义代码中出现 "Unrecognized identifier"?

sql - 按年 SSRS 对一排月进行分组

c# - 在集合中找不到参数 "@Name"