Reporting services SSRS中的数字转换

Reporting services SSRS中的数字转换,reporting-services,Reporting Services,我需要转换一个ID(十进制示例,536879311820),并在转换后使用表达式生成器显示在SSRS表中,如图所示 转换规则如下所示: 将数字转换为十六进制并右转8位 (536879311820至00802BCC) 将所取的8位数字转换为十进制,然后右转5位 (00802BCC至8399820) 因此,536879311820应在报告中显示为99820。我在表达式生成器中尝试了以下表达式 =Right(HEX(Fields!PersonId.Value), 8) 因为这个表达式的结果是十六

我需要转换一个ID(十进制示例,536879311820),并在转换后使用表达式生成器显示在SSRS表中,如图所示

转换规则如下所示:

  • 将数字转换为十六进制并右转8位 (536879311820至00802BCC)
  • 将所取的8位数字转换为十进制,然后右转5位 (00802BCC至8399820)
因此,536879311820应在报告中显示为99820。我在表达式生成器中尝试了以下表达式

=Right(HEX(Fields!PersonId.Value), 8)

因为这个表达式的结果是十六进制数作为字符串,所以我在expression builder的common functions类别中找不到任何函数。

这在SQL中更容易实现。这里有一些代码可以帮你做到这一点。我添加了两列,以便您可以看到最后一列是如何计算的:

SELECT  CAST(123456789 AS VARBINARY(8)) HexValue, CONVERT(VARCHAR(MAX), CAST(123456789 AS VARBINARY(8)),2) AS VARCHARHEX, RIGHT(CONVERT(VARCHAR(MAX), CAST(123456789 AS VARBINARY(8)),2),5) AS Last5Chars

在获得最后8个字符后,必须将字符串格式化为十六进制:

=CDec("&H" + Right(Hex(536879311820), 8))

我正在生成报告,那么我应该在哪里使用代码?在查询设计器中?我可以按我的目标方式执行吗?将此代码添加到数据集中-例如,在视图或存储过程中。如果SQL存储在您的报表中,出于可维护性考虑,我建议您还是将其放入数据库中。@RotatingWheel如果对您有帮助,请将其标记为已回答。