Reporting services 使用LookUnder时出现表达式错误?
我有一份SSRS 2012报告,其中有一个表达我很纠结 我的报表由存储过程运行。存储过程中的每一行都返回一条资金记录。每个资金记录都附加到一个任务记录。每个任务都可以有一个或多个资金记录。每个资金记录可能有也可能没有与之关联的资金公司。 这意味着我的数据看起来像这样Reporting services 使用LookUnder时出现表达式错误?,reporting-services,Reporting Services,我有一份SSRS 2012报告,其中有一个表达我很纠结 我的报表由存储过程运行。存储过程中的每一行都返回一条资金记录。每个资金记录都附加到一个任务记录。每个任务都可以有一个或多个资金记录。每个资金记录可能有也可能没有与之关联的资金公司。 这意味着我的数据看起来像这样 TaskID | FundingID | RCPFundingCompany 100 1000 Intel 100 1001 IBM 100 1002 TI
TaskID | FundingID | RCPFundingCompany
100 1000 Intel
100 1001 IBM
100 1002 TI
101 1003 Intel
101 1004 <null>
101 1005 <null>
102 1006 <null>
我的第一个想法是使用lookupper函数将这些值连接到每行的单个单元格中。
所以,我用这个表达式:
=LookupSet(Fields!TaskID.Value, Fields!TaskID.Value, Fields!RCPCompanies.Value, "TaskReviewSummary")
当我预览报告时,会出现以下错误:
Warning 1 [rsInvalidExpressionDataType] The Value expression used in textrun ‘Textbox10.Paragraphs[0].TextRuns[0]’ returned a data type that is not valid.
我做错了什么?
哈哈,我忘了加入
=(Join(LookupSet(Fields!TaskID.Value, Fields!TaskID.Value, Fields!RCPCompanies.Value, "TaskReviewSummary"), ", "))
不幸的是,这导致了以下结果:
Task ID RCPFundingCompany
Row1 Task 100 Intel, IBM, TI
Row2 Task 101 Intel,
Row3 Task 102 , , ,
如果我理解正确的话,因为LookupSet正在创建一个数组,所以它收集空值,然后连接将它们全部连接起来。嘘
怎么办 由于连接导致LookupSet中的null出现问题,我决定通过将逗号放入存储过程来消除连接 因此,我的数据如下所示:
Task ID RCPFundingCompany
Row1 Task 100 Intel, IBM, TI
Row2 Task 101 Intel
Row3 Task 102
TaskID | FundingID | RCPFundingCompany
100 1000 Intel,
100 1001 IBM,
100 1002 TI,
101 1003 Intel,
101 1004 <null>
101 1005 <null>
102 1006 <null>
此表达式首先测试连接的数据集是否长于0。如果没有,则不会打印任何内容。如果是,则将字符串连接在一起,并删除最后一个逗号。我的数据现在看起来很完美
那么,我做错了吗?有没有更好、更明显、更简单的解决方案 很遗憾,我最初提交的答案不起作用,因为它没有消除重复项。因此,我的一些行将如下所示: IBM,IBM,TI,TI,英特尔 此时最快的解决方案是在存储过程中使用For XML Path特性来连接值,并消除在SSR中使用表达式来连接值
=IIF(Len(Join(LookupSet(Fields!TaskID.Value, Fields!TaskID.Value,
Fields!RCPCompanies.Value, "TaskReviewSummary"), ""))= 0,
"",
Left((Join(LookupSet(Fields!TaskID.Value, Fields!TaskID.Value,
Fields!RCPCompanies.Value, "TaskReviewSummary"), "")),
abs(Len(Join(LookupSet(Fields!TaskID.Value, Fields!TaskID.Value,
Fields!RCPCompanies.Value, "TaskReviewSummary"), ""))-2)))