Что я делаю не так с моим выражением текстового поля SSRS? - PullRequest
0 голосов
/ 10 апреля 2019

Я создаю отчет RDLC для пожертвований. У меня есть dataset1, который включает в себя таблицу SVC и таблицу DOR. В моем выражении я могу получить суммы в долларах в таблице SVC, однако мне не удалось получить названия организаций из таблицы DOR. Что я пытаюсь сделать:

  1. Посмотрите на каждую запись, обозначенную SVC_IDNUM
  2. Получить значения из полей пожертвований (пример SVC_DN01PY, SVC_DN02PY, SVC_DN03PY)
  3. Получить значение из 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"))

Я также включил свой SQL-запрос для DataSet1. Это длительный запрос, потому что для отчета требуется много информации.

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

1 Ответ

0 голосов
/ 11 апреля 2019

Ваше 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 вТабликс вы можете отобразить 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 в таблицу, на этот раз добавьте следующее выражение:

=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")
...