我有一个SSRS报告,它用存储过程填充参数。此查询按预期工作。当参数用于运行报表时,参数将被截断。我选择了值ABCD,但是报告返回ABC的值。我传递参数的存储过程在SSMS中完美地运行,并返回ABCD数据。在查询设计器中测试查询或运行报表时,将获得ABC数据。如何让SSRS传递整个参数?
发布于 2015-10-02 14:21:48
参数是没有设置长度的字符串。没有什么可以截断你的值。您是否检查了值以确保值和标签相同?
标签是您所看到的(ABCD),而值实际上是在参数中传递的。我不知道这是否会是你的问题,如果它在你的本地机器上工作。
如果这样做不起作用,您可以尝试删除参数并重新创建它--它不应该工作,但是以前已经工作过了。
发布于 2015-10-02 15:58:33
我以前遇到过这样的情况,尝试进入您所拥有的存储过程,并为您的参数结果创建一个输出表,使其成为常量,即
declare @mytable table (returnval varchar(50))
确保在表中为查询结果生成一列,并确保数据类型为varchar,其速度足以容纳任何可能的返回选择值。注意:不要使用nvarchar,因为我发现这有时仍然会截断值和截断。
您将希望对最初执行的proc以相同的方式执行查询,但这次将值插入到临时表中,即
insert into @mytable
select * from table.name
这将将所有值插入到临时表中,而且这个表现在对于所有不会更改的返回值都有一个设置值长度,您可以通过对表使用set length字段尝试以相同的方式对原始查询这样做。问题是存在许多因素可以改变这一点,下面是几个例子。
此外,请在后端签入报表的配置设置,并确保返回值是从查询中设置的,但也要确保没有为返回数据类型指定设置,如果在报表设计时首先创建报表并使用静态参数测试首先创建报告,然后指定参数是来自我已经发生的查询结果集的列表,则有时会发生这种情况。
最后,每次对某些内容进行更改时,一种良好的做法是确保每次都生成报告,而不是显示缓存的报告版本,这使报告看起来好像每次都没有变化。这样做的方法是,每次或在运行报表时关闭报表,并确保在运行报表后单击页面上的重新加载,以强制重新加载,以确保每次都看到差异。
我认为,如果你这样做,你要么找到问题,或消除它,或两者兼而有之,因为我有这么多次。
https://stackoverflow.com/questions/32916531
复制