2009-08-13 67 views
3

我试图使用URL访问来从sql server reporting services 2008中提取一些报告。我需要传递的参数之一是Guid。当我刚GUID粘贴到URL作为将Guid传递给SSRS 2008 Url访问参数

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

我得到的错误: 默认值或提供的报表参数值“LoggerID”不是一个有效的值。 (rsInvalidReportParameter)

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

回答

2

事实证明,当您将参数的可用值设置为“从查询中获取值”时,它将不会接受URL中的guid。只要我把它关掉,它就会起作用。这似乎只是GUID的一个问题,因为我正在用整数进行此操作,并且它工作正常。

相关:2008仍然使用字符串作为参数类型。

+0

我可以证实这一点。在我的情况下,我需要能够打开带有URL参数的报告或不带。如果没有指定参数,它应该有一个默认值。我的解决方案:创建两个参数。 @First填充查询并具有默认值。 @Second默认为null。然后,我可以在URL中设置@Second,并在使用ISNULL(@Second,@First)的查询中使用两者。 – 2009-11-17 09:10:00

1

将Guid以这种格式传递给我自己的报告之一可以正常工作。

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

另请注意(根据我的经验),SSRS URL参数区分大小写。如果你在URL上传递“loggerid = ...”,你的参数被称为“LoggerID”,那么你会得到一个错误信息(尽管这不是你描述的错误,所以我怀疑这是问题)。

更新

我刚刚看了一下在设计模式矿的报告,并实际使用“字符串”的参数类型。在SSRS 2005中,没有使用Guid的选项。这可能是一个选项(将参数更改为字符串并在查询中进行强制转换),尽管它会有点破绽。

+0

对不起,我的代码是例子。我在字符串中使用正确的大小写LoggerID。 – jimconstable 2009-08-13 23:26:32

+0

我假设你使用的是2008? – jimconstable 2009-08-13 23:32:59

+0

不,我只是在2005年。也许功能在2008年发生了变化。听起来不合逻辑。 – 2009-08-13 23:49:29

3

我刚碰到这个问题,结果证明Guid中的字母大小写问题。

由于SSRS不理解uniqueidentifiers,它只是将它们视为字符串。因此,如果您有该参数的“从查询中获取值”选项,则您传入的url参数必须与字符的查询结果字符匹配。这意味着匹配资本

它没有当上了网址我不得不

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

,但工作时,我改变了对

&entityIdentifier=75745b11-09b8-4bf6-98ef-f3e8a2acec05 
+0

我还发现你必须确保你在'ReportServer'部分,而不是'Report'部分。检查如下:如果你有** http:// [address] /*Reports*/...**这是错误的...它需要是** http:// [address]/* ReportServer */** ... – 2012-08-25 09:57:40

0

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

可用值数据集查询例如:

SELECT CAST(MyGuidColumn AS varchar(36)) AS MyGuidColumn, MyLabelColumn 
FROM MyTable 
0

我有同样的问题几次,由于某种原因,在URL GUID具有较低的情况下进来,否则它不会接受它。

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