Jon*_*onH 9 sql-server sorting reporting-services sql-server-2014
我正在使用SSRS 2014访问SQL Server 2014数据库.我从最初的版本开始使用SSRS,但从未遇到过这个问题所以我不知道它是否是SSRS 2014中的错误.我有一个存储过程返回一些数据,简单如下:
CREATE PROCEDURE [dbo].[GetNewsletterStories]
@NewsletterID int,
@IsMainStory int=2 --2 is both, 1 is true, 0 is false
AS
BEGIN
SET NOCOUNT ON;
SELECT
ns.SortOrder as SortOrder,
ns.Title,
ns.Description,
ns.LinkText,
ns.LinkURL,
ns.PictureName,
ns.IsMainStory
FROM
NewsletterStory ns
INNER JOIN
Newsletter n
ON
n.NewsletterID = ns.NewsletterID
WHERE
n.Deleted=0
AND ns.Deleted=0
AND n.NewsletterID = @NewsletterID
--do they want non main story or main story or both
AND ((ns.IsMainStory = 0 AND @IsMainStory=0) OR (ns.IsMainStory = 1 AND @IsMainStory=1) OR (@IsMainStory=2))
ORDER BY
ns.SortOrder
END
Run Code Online (Sandbox Code Playgroud)
如果我从Management Studio中运行存储过程,如下所示:
USE [MyDB]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[GetNewsletterStories]
@NewsletterID = 1,
@IsMainStory = 1
SELECT 'Return Value' = @return_value
GO
Run Code Online (Sandbox Code Playgroud)
我按正确的顺序得到了我需要的东西:
然后我在SSRS中创建我的数据集,可以转到查询设计器并运行它:
这是它提示我输入参数的地方:
我得到了我所需要的:
到目前为止,我添加了我的tablix并设置了我创建的数据集名称,甚至[SortOrder]
根据我的数据集中的列设置了排序部分:
每次运行报表时,我都会得到错误的排序顺序:
简单的我认为,它必须缓存一些旧版本,所以我确保删除我的报告MyReport.rdl.data
文件,以便我得到一个新的报告.不过,它仍然首先显示"Concerto Integration",然后是"RIMS Newsletter"......但我的数据集和我的存储过程正在返回正确的顺序"RIMS Newsletter"和"Concerto Integration".我已经尝试了所有的东西,但它似乎总是按表格的主键排序(文章创建时,因为我在RIMS时事通讯文章之前创建了Concerto Integration文章).
我不知道在哪里看,我甚至检查了结果XML(视图代码功能),并且SortOrder
在数据集中.即使我删除SortOrder
它应该工作,因为存储过程已经按照您在代码中看到的排序.
是什么赋予了?
Jon*_*onH 12
哇发现它并且像往常一样它是SSRS中的一个错误,我记得在SSRS 2005和SSRS 2008中存在这些错误.所以即使您在设计器中更改了SortOrder,在我的情况下我将其更改为SortOrder.那没有用......所以我做的是右键点击实际报告并做了"查看代码".我查找了SortExpression并且它没有值SortOrder,它几乎就像在某些情况下从设计器更新报告时代码xml部分看不到那些更新.
无论如何我改变它,以便XML读取:
<SortExpressions>
<SortExpression>
<Value>=Fields!SortOrder.Value</Value>
</SortExpression>
</SortExpressions>
Run Code Online (Sandbox Code Playgroud)
保存了我的报告并再次运行,瞧,一切都很顺利.经验教训使用"查看代码"选项的先前经验来解决此类问题.
这是整个事情:
<TablixMembers>
<TablixMember>
<Group Name="Title">
<GroupExpressions>
<GroupExpression>=Fields!Title.Value</GroupExpression>
</GroupExpressions>
</Group>
<SortExpressions>
<SortExpression>
<Value>=Fields!SortOrder.Value</Value>
</SortExpression>
</SortExpressions>
<TablixMembers>
<TablixMember>
<Group Name="Details2" />
<TablixMembers>
<TablixMember />
<TablixMember />
<TablixMember />
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixMember>
</TablixMembers>
Run Code Online (Sandbox Code Playgroud)
无论我在设计器中做了什么都不会更新sortexpression值部分,这部分:
<SortExpressions>
<SortExpression>
<Value>=Fields!SortOrder.Value</Value>
</SortExpression>
</SortExpressions>
Run Code Online (Sandbox Code Playgroud)
我尝试了设计器但它从未更新过XML,并且运行报告产生了错误的结果.直到我手动更改SortExpression才能读取Fields!SortOrder.Value才能正确排序我的报告.
这是评论中提到的屏幕截图:
更好的照片:
即使我在标题级别同样的问题:
归档时间: |
|
查看次数: |
14651 次 |
最近记录: |