我正在为捐款创建一份RDLC报告。我有dataset1
,其中包括SVC
表和DOR
表。在我的表达中,我能够在SVC
表中获得美元金额,但是,我无法从DOR
表中获取组织名称。我想做什么:
SVC_IDNUM
确定的每条记录SVC_DN01PY, SVC_DN02PY, SVC_DN03PY
)SVC_DONCOD
(捐赠代码)获取价值并匹配DOR_ORGNUM
代码并获得相应的DOR_ORGNAM
(组织名称)。捐赠金额有效,但组织名称不起作用。我不熟悉SSRS,一直在寻找解决方案。我错过了什么或做错了什么?
我一直在尝试使用Join
,LookupSet
来尝试实现这一目标。
="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。这是报告部分的屏幕截图,这是报告中许多记录的一个记录。红线表示我的雇主要求的单个文本框,必须包括组织名称,后跟捐赠金额。
你的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_DONCOD2
和CompanyName
。要显示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")