将Guid传递给SSRS 2008 Url Access参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Guid传递给SSRS 2008 Url Access参数相关的知识,希望对你有一定的参考价值。

我正在尝试使用URL访问从sql server reporting services 2008中提取一些报告。我需要传递的参数之一是Guid。当我只是将guid粘贴到url中时

&LoggerID=CD4869DC-68B8-4513-B3C6-0E6DD9F74380

我收到错误:为报告参数“LoggerID”提供的默认值或值不是有效值。 (rsInvalidReportParameter)

我试过单引号,括号和大括号。我错过了什么?

答案

我刚遇到这个问题,结果证明Guid里面的字母大写有问题。

由于SSRS不理解uniqueidentifier,它只是将它们视为字符串。因此,如果您为该参数提供了“从查询中获取值”选项,则传入的url参数必须与字符的查询结果字符匹配。意义匹配大写

在我的网址上它失败了

&entityIdentifier=75745B11-09B8-4BF6-98EF-F3E8A2ACEC05

但是当我改变它时工作

&entityIdentifier=75745b11-09b8-4bf6-98ef-f3e8a2acec05
另一答案

事实证明,当您将参数的可用值设置为“从查询中获取值”时,它将不接受URL中的guid。一旦我关闭它,它就有效。这似乎只是GUID的一个问题,因为我用一个整数这样做,它工作正常。

相关:2008仍然使用string作为参数类型。

另一答案

将该格式的Guid传递给我自己的一个报告工作正常。

我注意到您的错误消息是关于一个名为“LoggerID”的参数,但您的URL使用“guid”作为参数名称。这不是那么简单吗?

另请注意(根据我的经验)SSRS URL参数区分大小写。如果您在URL上传递“loggerid = ...”并且您的参数被称为“LoggerID”,那么您将收到一条错误消息(尽管这不是您描述的错误,因此我怀疑这是问题所在)。

更新

我刚刚在设计模式中查看了我的报告,它实际上使用“String”作为参数类型。在SSRS 2005中,没有使用Guid的选项。这可能是你的选择(将参数更改为字符串并在查询中强制转换),尽管它有点像黑客。

另一答案

我刚刚尝试通过URL传递GUID参数时遇到了问题。我的解决方案是将uniqueidentifier转换为用于参数可用值的数据集查询中的varchar(36)。然后,像其他人提到的那样,有必要确保URL中GUID的大小写与可用值数据集中的大小写匹配。

可用值数据集查询示例:

SELECT CAST(MyGuidColumn AS varchar(36)) AS MyGuidColumn, MyLabelColumn
FROM  MyTable
另一答案

我有几次同样的问题,由于某种原因,URL中的Guid必须小写,否则它将不接受它。

确保您的Guid格式化为小写。

以上是关于将Guid传递给SSRS 2008 Url Access参数的主要内容,如果未能解决你的问题,请参考以下文章

报告正文中的SSRS日历控件

TS1127:将 Guid 传递给 js 方法时,剃须刀页面上的字符无效

SSRS 2008,两个数据集,一个图表

SSRS 2008 R2-格式参数为DD / MM / YYYY

在SSRS 2008中嵌套IIF

SSRS 2008:使细节分组换行(水平表?)