長篇帖子的道歉。SSRS 2012使用開關語句並在組頁腳中使用LookupSet計數
我有一個SSRS 2012報告看2個集,dataSet1的和Dataset2。
Dataset2可能會返回0,1或2條記錄,所以我使用LookupSet來完成此操作。從返回的記錄中,我需要顯示幾個字段。
該報告按Main_ID分組。在Main_ID的頁腳中,我計算了數據集2中返回的記錄的數量。
=LookupSet(Fields!MainID.Value, Fields!MainID.Value, Fields!Record_Name.Value, "Dataset2").Length
這工作正常,我得到0,1或2視情況而定。
在Dataset2領域:
HasIP
將被用來確定哪個記錄陣列我顯示(如我需要測試在Dataset2字段值)。
我想使用switch語句來使用LookupSet數組的長度來返回正確的字段。
- 如果沒有記錄(陣列的例如長度= 0),則返回 數2
- 如果有1個記錄(例如陣列的長度= 1),然後返回 Record_Name
- 如果有2條記錄(例如數組的長度= 2),則檢查字段HasIP的 。
- 如果HasIP = Yes,則返回該匹配條目的Record_Name
- 如果HasIP = YesNo,則返回該匹配條目的Record_Name。
- 如果一切都失敗,返回2號
這是我到的時刻。
=Switch(
'if no returns returned, display the numeral 2
LookupSet(Fields!Main_ID.Value, Fields!Main_ID.Value, Fields!Record_Name.Value, "Dataset2").Length=0, 2,
'if one return returned, then display Record Name
LookupSet(Fields!Main_ID.Value, Fields!Main_ID.Value, Fields!Record_Name.Value, "Dataset2").Length=1,
LookUp(Fields!Main_ID.Value,Fields!Main_ID.Value,Fields!Record_Name.Value,"Dataset2"),
'if two records returned, check the HasIP field. If HasIP = YesYes, then use this combination first.
LookupSet(Fields!Main_ID.Value, Fields!Main_ID.Value, Fields!Record_Name.Value, "Dataset2").Length=2 AND
LookUpSet(Fields!Main_ID.Value,Fields!Main_ID.Value,Fields!HasIP.Value,"Dataset2")(0)="YesYes",
LookUpSet(Fields!Main_ID.Value,Fields!Main_ID.Value,Fields!Record_Name.Value,"Dataset2")(0),
LookupSet(Fields!Main_ID.Value, Fields!Main_ID.Value, Fields!Record_Name.Value, "Dataset2").Length=2 AND
LookUpSet(Fields!Main_ID.Value,Fields!Main_ID.Value,Fields!HasIP.Value,"Dataset2")(1)="YesYes",
LookUpSet(Fields!Main_ID.Value,Fields!Main_ID.Value,Fields!Record_Name.Value,"Dataset2")(1),
'if two records returned, check the HasIP field. If HasIP = YesNo, then use this combination second.
LookupSet(Fields!Main_ID.Value, Fields!Main_ID.Value, Fields!Record_Name.Value, "Dataset2").Length=2 AND
LookUpSet(Fields!Main_ID.Value,Fields!Main_ID.Value,Fields!HasIP.Value,"Dataset2")(0)="YesNo",
LookUpSet(Fields!Main_ID.Value,Fields!Main_ID.Value,Fields!Record_Name.Value,"Dataset2")(0),
LookupSet(Fields!Main_ID.Value, Fields!Main_ID.Value, Fields!Record_Name.Value, "Dataset2").Length=2 AND
LookUpSet(Fields!Main_ID.Value,Fields!Main_ID.Value,Fields!HasIP.Value,"Dataset2")(1)="YesNo",
LookUpSet(Fields!Main_ID.Value,Fields!Main_ID.Value,Fields!Record_Name.Value,"Dataset2")(1),
'If all else fails, display the number 2
True, 2)
我得到了正確的返回2記錄,但得到0和1記錄#ERROR。如果我將公式分解成它們各自的部分:
=SWITCH(
LookupSet(Fields!MainID.Value, Fields!MainID.Value, Fields!Record_Name.Value, "Dataset2").Length=0,
2)
這是有效的。數字2顯示在我的報告中,數據集2中沒有條目(該字段對於任何其他組合都是空白的)。
如果我使用:
=SWITCH(LookupSet(Fields!MainID.Value, Fields!MainID.Value, Fields!Record_Name.Value, "Dataset2").Length=1, LookUp(Fields!MainID.Value,Fields!MainID.Value,Fields!Record_Name.Value,"Dataset2"))
這能正常工作時,我有1個記錄從Dataset2返回(領域是空白的任何其他組合)。
無論我嘗試第三部分(處理2條記錄),我都會遇到問題。我可以得到正確的記錄名稱返回,但我得到0或1記錄的#ERROR。 我嘗試在IIF語句中嵌套第三部分,翻轉它首先看長度等,但沒有成功。
我無法編輯任何數據集的基礎查詢。
任何指導非常讚賞。