SSRS参数和图像怎么了?
What's up with SSRS parameters and images?
我正在努力在 SSRS 中设置报告。我们的报告比较灵活,我希望根据参数动态 select 封面页图像。
这是我的:
在我们的报告数据库中,我设置了一个 图像 table。为了简单起见,假设我有三列:
ImageName, ImageType, and Image.
名称和类型都是varchar,而ImageType是varbinary。我已经将我们计划使用的图像及其名称和相关类型上传到 table。
在我的报告中,我有一个数据源和一个数据集,用于引入上述 table 和列。
我还有一个名为 "ImageName." 的参数,我已将此参数设置为使用 "Image"(来自上述 table)作为其值字段,标签字段是设置 "ImageName."
在报告本身上我有一个图像...控件?报告要素?不知道该怎么称呼它,但我已经设置了一个图像。图像源设置为 "Database" 并且 MIME 类型使用查找函数根据参数从数据集中提取适当的图像类型!ImageName.Label 参数 - 这部分工作 - 我是return每次输入正确的 MIME 类型。
设置图像本身不起作用,但我希望它应该起作用。对于 "Select the image source:" 下的 "Use this field" 字段,我尝试了 =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 代码。
如果我尝试通过上面的查找检查 return 类型,我只会得到一个错误。对于参数,如果我检查我得到的类型 System.String
所以我决定打印出来,显然 Parameters!ImageName.Value
的值出于某种原因是 System.Byte[]
。
我可以使用 First()
函数获取要显示的图像,但我需要能够 select 该图像。我猜我可能需要过滤。 First()
有一个return类型的System.Byte[]
,这似乎是合理的。我只是不明白为什么我的参数 return 将图像数据列的类型作为字符串而不是图像列本身的数据。
那么我该如何让它工作呢?过滤我的数据集是我唯一的选择吗?或者有没有办法让参数工作或获得一些功能,让我 select 合适的图像?
您出错的原因是 Parameters
与 First
返回的数据类型有关。
因为返回的 Parameters
数据类型是文本类型,它不是有效的图像数据类型,因此出现错误。
对于First
函数,它returns基于表达式类型的数据类型,它returns图像的正确数据类型并显示图像。
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
我正在努力在 SSRS 中设置报告。我们的报告比较灵活,我希望根据参数动态 select 封面页图像。
这是我的:
在我们的报告数据库中,我设置了一个 图像 table。为了简单起见,假设我有三列:
ImageName, ImageType, and Image.
名称和类型都是varchar,而ImageType是varbinary。我已经将我们计划使用的图像及其名称和相关类型上传到 table。
在我的报告中,我有一个数据源和一个数据集,用于引入上述 table 和列。
我还有一个名为 "ImageName." 的参数,我已将此参数设置为使用 "Image"(来自上述 table)作为其值字段,标签字段是设置 "ImageName."
在报告本身上我有一个图像...控件?报告要素?不知道该怎么称呼它,但我已经设置了一个图像。图像源设置为 "Database" 并且 MIME 类型使用查找函数根据参数从数据集中提取适当的图像类型!ImageName.Label 参数 - 这部分工作 - 我是return每次输入正确的 MIME 类型。
设置图像本身不起作用,但我希望它应该起作用。对于 "Select the image source:" 下的 "Use this field" 字段,我尝试了 =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 代码。
如果我尝试通过上面的查找检查 return 类型,我只会得到一个错误。对于参数,如果我检查我得到的类型 System.String
所以我决定打印出来,显然 Parameters!ImageName.Value
的值出于某种原因是 System.Byte[]
。
我可以使用 First()
函数获取要显示的图像,但我需要能够 select 该图像。我猜我可能需要过滤。 First()
有一个return类型的System.Byte[]
,这似乎是合理的。我只是不明白为什么我的参数 return 将图像数据列的类型作为字符串而不是图像列本身的数据。
那么我该如何让它工作呢?过滤我的数据集是我唯一的选择吗?或者有没有办法让参数工作或获得一些功能,让我 select 合适的图像?
您出错的原因是 Parameters
与 First
返回的数据类型有关。
因为返回的 Parameters
数据类型是文本类型,它不是有效的图像数据类型,因此出现错误。
对于First
函数,它returns基于表达式类型的数据类型,它returns图像的正确数据类型并显示图像。
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