我的SSRS文本框表达式出了什么问题?

问题描述 投票:0回答:1

我正在为捐款创建一份RDLC报告。我有dataset1,其中包括SVC表和DOR表。在我的表达中,我能够在SVC表中获得美元金额,但是,我无法从DOR表中获取组织名称。我想做什么:

  1. 查看由SVC_IDNUM确定的每条记录
  2. 从捐赠领域获取价值(例如SVC_DN01PY, SVC_DN02PY, SVC_DN03PY
  3. SVC_DONCOD(捐赠代码)获取价值并匹配DOR_ORGNUM代码并获得相应的DOR_ORGNAM(组织名称)。

捐赠金额有效,但组织名称不起作用。我不熟悉SSRS,一直在寻找解决方案。我错过了什么或做错了什么?

我一直在尝试使用JoinLookupSet来尝试实现这一目标。

="Donations: " & Join(LookupSet(Fields!SVC_IDNUM.Value,Fields!SVC_IDNUM.Value,
 IIF(Fields!SVC_DONCOD.Value = Fields!DOR_ORGNUM.Value, Fields!DOR_ORGNAM.Value &" ", " ") & IIF(Fields!SVC_DN01PY.Value > 0, Fields!SVC_DN01PY.Value &" ", " ") &
 IIF(Fields!SVC_DONCOD.Value = Fields!DOR_ORGNUM.Value, Fields!DOR_ORGNAM.Value &" ", " ") & IIF(Fields!SVC_DN02PY.Value > 0, Fields!SVC_DN02PY.Value &" ", " ") &
 IIF(Fields!SVC_DONCOD.Value = Fields!DOR_ORGNUM.Value, Fields!DOR_ORGNAM.Value &" ", " ") & IIF(Fields!SVC_DN03PY.Value > 0, Fields!SVC_DN03PY.Value &" ", " "),"DataSet1"))

我还包括了我对DataSet1的SQL查询。这是一个冗长的查询,因为报告需要大量信息。

string query1 = "SELECT FJSSVBAT.SVB_BATNBR, FORMAT(FJSSVBAT.SVB_CHKDAT,'MM/dd/yyyy'),
FJSWHEEL.WHL_IDNUM, FJSWHEEL.WHL_FSTNAM, FJSWHEEL.WHL_MIDNAM, FJSWHEEL.WHL_LSTNAM, 
FJSWHEEL.WHL_SUFFIX, FJSWHEEL.WHL_ADDR1, FJSWHEEL.WHL_ADDR2, FJSWHEEL.WHL_CITY,
FJSWHEEL.WHL_STATE, FJSWHEEL.WHL_ZIPCDE, FJSWHEEL.WHL_SUBPNL, FJSWHEEL.WHL_SELCNT, 
FJSSVCTL.SVC_CHKNBR, FORMAT(FJSSVCTL.[SVC_CHKDAT],'MM/dd/yyyy'), FJSSVCTL.SVC_BATNBR, 
FJSSVCTL.SVC_IDNUM, FJSSVCTL.SVC_ONEWAY, FJSSVCTL.SVC_TRVPAY, FJSSVCTL.SVC_REGPAY, 
FJSSVCTL.SVC_HGHPAY, FJSSVCTL.SVC_HGHPY2, FJSSVCTL.SVC_HGHPY3, FJSSVCTL.SVC_PRKPAY, 
FJSSVCTL.SVC_SBSPAY, FJSSVCTL.SVC_MSCPAY, FJSSVCTL.SVC_TOTPAY, FJSSVCTL.SVC_JURPAY, 
FJSSVCTL.SVC_DONPAY, FJSSVCTL.SVC_DONCOD, FJSSVCTL.SVC_DN01PY, FJSSVCTL.SVC_DN02PY, 
FJSSVCTL.SVC_DN03PY, FJSSVCTL.SVC_DN04PY, FJSSVCTL.SVC_DN05PY, FJSSVCTL.SVC_DN06PY, 
FJSSVCTL.SVC_DN07PY, FJSSVCTL.SVC_DN08PY, FJSSVCTL.SVC_DN09PY, FJSSVCTL.SVC_DN10PY, 
FJSSVCTL.SVC_DN11PY, FJSSVCTL.SVC_DN12PY, FJSSVCTL.SVC_DN13PY, FJSSVCTL.SVC_DN14PY, 
FJSSVCTL.SVC_DN15PY, FJSSVCTL.SVC_DN16PY, FJSSVCTL.SVC_DN17PY, FJSSVCTL.SVC_DN18PY, 
FJSSVCTL.SVC_DN19PY, FJSSVCTL.SVC_DN20PY, DONORG.DOR_ORGNUM, DONORG.DOR_ORGNAM,
FJSSVDTL.*, FJSDSCTL.DS_DSTNM1, FJSDSCTL.DS_DSTNM2 FROM FJSSVBAT JOIN FJSSVCTL ON 
FJSSVBAT.SVB_BATNBR = @BatchNumber JOIN FJSWHEEL ON FJSSVCTL.SVC_IDNUM =
FJSWHEEL.WHL_IDNUM JOIN FJSSVDTL ON FJSWHEEL.WHL_IDNUM = FJSSVDTL.SVD_IDNUM AND
FJSSVDTL.SVD_BATNBR = @BatchNumber FULL OUTER JOIN DONORG CROSS JOIN FJSDSCTL WHERE
(FJSSVBAT.SVB_BATNBR = @BatchNumber) AND () ORDER BY FJSSVCTL.SVC_CHKNBR";

SVC_DONCOD.Value为1,DOR_ORGNUM.Value为1,DOR_ORNAM.Value为United Way,SVC_DN01PY.Value为7.16美元。文本框中的结果应为United Way $ 7.16。这是报告部分的屏幕截图,这是报告中许多记录的一个记录。红线表示我的雇主要求的单个文本框,必须包括组织名称,后跟捐赠金额。 enter image description here

c# reporting-services expression
1个回答
0
投票

你的Lookupset()表达错误。根据您的关系,您可以使用Lookup()(1:1关系)和LookupSet()显示数据,以获得1:n的关系。我想通过这个例子,您应该能够使您的报告正常运行。我不确定你的桌子是怎么回事,但我假设是这样的:

1:1的关系

'Dataset1

 SVC_DONCOD1   Amount
     1          20€
     2          30€

'Dataset2

SVC_DONCOD2   CompanyName
    1          Test1
    2          Test2

如果你把Dataset2放在一个tablix中,你可以显示SVC_DONCOD2CompanyName。要显示Amount,请在详细信息文本框中添加以下表达式:

=Lookup(Fields!SVC_DONCOD2.Value, Fields!SVC_DONCOD1.Value, Fields!Amount.Value, "Dataset1")

结果:

 SVC_DONCOD2   Amount   CompanyName
     1          20€        Test1
     2          30€        Test2

1:n关系

 SVC_DONCOD1   Amount
     1          20€
     2          30€
     1          10€
     1          10€

'Dataset2

SVC_DONCOD2   CompanyName
    1          Test1
    2          Test2

再次将Dataset2放在Tablix中,这次添加以下表达式:

=LookupSet(Fields!SVC_DONCOD2.Value, Fields!SVC_DONCOD1.Value, Fields!Amount.Value, "Dataset1")

结果:

 SVC_DONCODE2   CompanyName  Amount
     1            Test1       20€
                              10€
                              10€
     2            Test2

注意:

如果你的密钥由两个字段组成,只需将它们连接起来:

=Lookup(Fields!Dataset1Key1.Value & Fields!Dataset1Key2.Value, Fields!Dataset2Key1.Value & Fields!Dataset2Key2.Value, Fields!Disaplay.Value, "Dataset2")
© www.soinside.com 2019 - 2024. All rights reserved.