我正在修改旧版SSRS报告(rdl文件);我已经添加了四列,并通过新的数据源(存储过程)提供这些值。
但是,现在当我尝试通过"预览"标签,我得到:
在本地报告处理期间发生错误。 用于分组' table1_Group1'返回了无效的数据类型。 " [第二个与上面的错误相同的错误信息]"
确实有一个名为" table1_Group1"的行组,其属性如下所示:
我不知道为什么NewBiz突然出现问题;关于它没有任何改变,之前没有任何关于它的投诉。
" NewBiz" (仍然)出现在"数据集属性"中的字段列表中窗格(字段名称和字段源都是" NewBiz");数据源(存储过程)确实返回它。所以......?!?
注意:" table1_Details_Group"在" table1_Group1"没有群体表达,因此似乎没有存在的理由;除非我误解了它的角色/目的。
Alan Schofield提出了数据集字段"是否符合预期顺序的问题。"
所以我在细齿显微镜下检查了一下。这是数据源/存储过程的最后一部分,它返回值:
select CY.CSDirector, CY.Category, CY.Segment, CY._Unit,
CU.New, CU.Assumed, CU.Existing, CU.Organic,
CY.NumUnits, CY.NumUnitsLast, CY.MonthSales, CY.MonthSalesLast,
CY.MonthPerc, CY.YTDSales, CY.YTDSalesLast, CY.YTDPerc,
CY.ProjSales, CY.YTDProjSales, CY.YTDBudgetPerc, CY.NewBiz
from #CombinedYears CY
left join #CategorizedUnits CU on CU.Unit = CY._Unit
这就是我在报告数据窗格中看到的数据:
所以第一个可能的差异在于" _Unit"被视为" ID_Unit"出于某种原因在数据集中。那为什么会这样? SSRS会自动转换" "到" ID "?如果这是一个已知的问题,那对我来说还是未知的。
之后,所有达拉斯都破裂了,因为田野的顺序发生了根本性的分歧。为什么?不应该刷新它们的命令吗?我怎样才能使它们伸直并向右飞行,或手动更改顺序以使它们匹配?注意:我不确定这是否应该重要 - 是吗?是否根据位置而不是字段名称填充字段值?我们,他们必须匹配,位置?
This让我意识到有上/下箭头的事实;我会尝试......
我更改了列表中字段的顺序以匹配从存储过程返回的字段,但它没有区别 - 当我尝试生成报告时,我仍然得到相同的错误消息。
在rdl文件中,可能存在问题的组表达式为:
<TablixRowHierarchy>
<TablixMembers>
<TablixMember>
<KeepWithGroup>After</KeepWithGroup>
<RepeatOnNewPage>true</RepeatOnNewPage>
<KeepTogether>true</KeepTogether>
</TablixMember>
<TablixMember>
<Group Name="table1_Group1">
<GroupExpressions>
<GroupExpression>=Fields!NewBiz.Value</GroupExpression>
</GroupExpressions>
</Group>
<TablixMembers>
<TablixMember>
<KeepWithGroup>After</KeepWithGroup>
<KeepTogether>true</KeepTogether>
</TablixMember>
<TablixMember>
<Group Name="table1_Details_Group">
<DataElementName>Detail</DataElementName>
</Group>
<TablixMembers>
<TablixMember />
</TablixMembers>
<DataElementName>Detail_Collection</DataElementName>
<DataElementOutput>Output</DataElementOutput>
<KeepTogether>true</KeepTogether>
</TablixMember>
<TablixMember>
<KeepWithGroup>Before</KeepWithGroup>
<KeepTogether>true</KeepTogether>
</TablixMember>
</TablixMembers>
</TablixMember>
<TablixMember>
<KeepWithGroup>Before</KeepWithGroup>
<KeepTogether>true</KeepTogether>
</TablixMember>
</TablixMembers>
</TablixRowHierarchy>
...更具体地说,这个:
<Group Name="table1_Group1">
<GroupExpressions>
<GroupExpression>=Fields!NewBiz.Value</GroupExpression>
</GroupExpressions>
</Group>
为什么会出现问题? NewBiz是结果集中包含的值,它有两个值可用于分组(-1,表示&#34;新&#34;和0,表示&#34;现有&#34;)。 / p>
为什么错误的消息?
该字段本身在rdl文件中表示如下:
<Field Name="NewBiz">
<DataField>NewBiz</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
现在它正在工作,现在改变了代码......这种情况经常发生在旧技术上,而且我不知道在没有&#的情况下是否会更加放心或烦躁39; t work突然开始工作,没有代码更改。为什么!?? Arghhhh! Gleeeep! (最后一个是快乐的声音,或多或少等同于argh的极性)。
答案 0 :(得分:1)
我有类似的问题。我有一个图表由3列查询提供,其中一个是聚合(ID代码,Sum(Count)和Day - 按此顺序)。我所做的就是把我在早前分组的字段放在我的查询中(即Day,ID Code和Sum(Count)),这似乎可以解决问题。这看起来有点愚蠢......但确实如此。