我有一个报告,我一直在向它发送一个运行良好的参数。报表参数已声明:
string[] pclist = new string(){ "A", "B", "C" };
ReportParameter pcode = new ReportParameter( "pcode", pclist, false );
它为我提供了一个新的报告参数,该参数是用3个值的字符串数组初始化的。到目前为止还不错。
在报表中,"pcode"参数被定义为"String",使用方式如下:
...
and PCode in ( @pcode )
...
最近,由于参数的值需要根据登录者的不同而变化,我们对此进行了更改,使参数从方法调用的返回值中获取其字符串数组。(该方法从数据库中获取值):
ReportParameter pcode = new ReportParameter( "pcode", FetchParams("X"), false );
FetchParams("X")对数据库执行选择并返回值的字符串[]。大多数时候它都很好用。但是,有时报告不运行,只返回错误消息:
The 'pcode' parameter is missing a value
我们确定的是,FetchParams("X")有时会返回几十个值。当字符串[]中的值数目过大时,报告将失败,并显示错误消息。显然,可以用来实例化ReportParameter对象的值的数量有某种上限。
最初,我们认为限制可能存在于sqlserver本身,因为它限制了子句中的可以处理的值的数量。然而,错误消息似乎并不支持这一结论。
edit:对于这种特殊情况,已经显示了反复试验,33是字符串数组中值数量的上限。
有人有这个问题的经验吗
数组中传递给ReportParameter ctor的值的数量是否有上限
有没有办法将上限设置为一个更大的数字?
我们将不胜感激。谢谢
hokay,伙计们,这是这个谜团的真正答案。
该报表有一个名为"pcode"的参数
"pcode"参数有一个数据源,用于创建下拉值列表
现在,运行报告的代码正在生成pcode参数的值列表
当值列表被传递到报表时,如果有一个值与从报表的数据源生成的报表的列表不匹配,则会得到令人麻木的ssrs错误消息:
The 'pcode' parameter is missing a value
ug ly。但那是给你的m$。
对于记录,传递给ReportParameter ctor的字符串数组中的值的数量似乎没有限制。。。并且错误消息来自ssrs,而不是生成ReportParameter对象的代码。
希望这能帮助其他有这个问题的人。