我有一个SSRS报告,它使用存储过程填充参数。此查询按预期工作。在运行报表时使用该参数时,将截断该参数。我选择值ABCD,但报告返回ABC的值。我传递参数的存储过程在SSMS中完美运行并返回ABCD数据。当我在查询设计器中测试查询或运行报表时,我获得了ABC数据。如何让SSRS传递整个参数?
答案 0 :(得分:0)
参数是没有设定长度的字符串。没有什么可以截断你的价值观。您是否检查了值以确保值和标签相同?
标签是您看到的(ABCD),而值是参数中实际传递的内容。如果它在你的本地机器上工作,我不知道这是不是你的问题。
如果这不起作用,您可以尝试删除参数并重新创建它 - 它应该不起作用但之前有效。
答案 1 :(得分:0)
之前我遇到过这样的事情,尝试进入你所拥有的存储过程并为你的参数结果创建一个输出表,这是常数,即
declare @mytable table (returnval varchar(50))
确保在表格中创建一列以显示您将返回的查询结果,并确保将数据类型设置为具有足够速度的varchar以保存任何可能的返回选择值。注意:不要使用nvarchar,因为我发现这仍然有时会截断值并切断关闭。
您将希望以与原先执行的proc相同的方式执行查询,但这次将值插入临时表,即。
insert into @mytable
select * from table.name
这会将所有值插入到临时表中,此表现在对于所有不会更改的返回值都有一个设置值长度,您可以尝试使用设置长度字段以与原始查询相同的方式执行此操作对于表格问题是存在许多可以改变这种情况的因素,这里有一些例子。
如果你有两个带有union的select语句来获取你想要用于最终结果的结果,那么每个字段可能有一个设置长度和数据类型不同于另一个,sql server将给出结果中的最佳数据类型,但是当它将数据发送到ssrs时,它可以将其解释为另一个长度值,除非设置。
您可能在返回字段中使用了多种数据类型,并且ssrs感到困惑,即使用interger值,varchar,text等等。这类强化了上面的那种。
< / LI>另一种可能性是它可能发生在SSRS方面,而不是proc,但通过这种方法,你可以消除一个可能的原因,即存储过程。
此外,检查后端报告的配置设置,并确保从查询中设置返回值,但也要确保没有为返回数据类型指定设置,有时候,如果在报表设计中首先创建报表并使用静态参数进行测试以首先创建报表,然后再指定参数是查询结果集中的列表,我也会发生这种情况。
最后,每次对某些内容进行更改时,一个好的做法是确保每次都生成报告,而不显示报告的缓存版本,这使得每次都无法对报告进行任何更改。这样做的方法是每次关闭报告或运行报告时也尝试确保在运行报告后点击页面上的重新加载以强制重新加载以确保每次都看到差异。 / p>
我认为,如果你做了所有这些,你会发现问题或者消除它或两者都有,因为我有这么多次。