2016-12-09 79 views
0

我有一個帶有三個參數的SSRS 2014報告:@Period(text),@FromDate(date)和@ToDate(date)。他們通過首先從期間下拉列表(1月,2月,3月等)中選擇一個值來一起工作。根據您選擇的期限,@FromDate和@ToDate參數會相應更改以反映您的選擇。這很好,但是當你選擇了一個新的時間段後,問題就出現了,因爲日期參數不會刷新。SSRS:兩個級聯日期參數不刷新

我一直在尋找一些建議和解決方法,但我還沒有找到一個處理兩個依賴日期參數的方法。有什麼建議麼?

+0

您是否使用父(@Period)參數來填充默認值或可用值?請注意,UI不會更改,但在運行時會正確設置「@ FromDate」和「@ ToDate」參數。 –

+0

@alejandrozuleta Period參數僅由可用值填充,而FromDate和ToDate僅由默認值填充。 – Simon

+0

在這種情況下,您可以將兩個日期參數都設置爲「內部」,這樣您的參數將僅從週期參數中填充,而不是從UI中填充。但是,如果必須讓用戶選擇日期,則必須創建兩個額外的參數才能使用內部值,並使用表達式填充它們以確定是使用@Period參數中的默認值還是使用可見日期參數中的值。 –

回答

0

一旦生成的日期參數無法更改。它沒有級聯設施,並根據微軟的說法,它的設計(這是他們怎麼想它的行爲):

Follow this link please

0

如前所述,它們沒有什麼可值的參數/默認值從級聯查詢不會刷新其默認值。

解決方法:創建一個行集,它計算你的DateFrom和DateTo日期,在每一個單獨的列,並根據您@Period參數和數據集分配到這兩個參數的可用默認值。缺點:運行報表時,您將無法編輯這些值,因爲這些字段是由數據集填充的。

0

這是按預期工作的,如果您更改它們依賴的參數,Microsoft不希望級聯日期參數刷新。但是可以繞過它。

它需要兩個數據參數,這兩個數據參數根據@Period參數返回一行所需的數據,例如,

DECLARE @Dates as TABLE ([Period] INT, [Date] SMALLDATETIME) 

INSERT INTO @Dates VALUES 
(1,DATEADD(s, 86340, DATEADD(dd,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)))) 
,(2,DATEADD(DAY , 7-DATEPART(WEEKDAY,GETDATE()),DATEADD(MINUTE,- 1,DATEADD(DAY,0,DATEADD(day,DATEDIFF(day,0,GETDATE())+1,0))))) 
,(3,DATEADD(MINUTE,- 1,DATEADD(DAY,0,DATEADD(day,DATEDIFF(day,0,GETDATE()),0)))) 

SELECT 
    [Period] 
    ,[Date] 
FROM 
    @Dates 
WHERE 
    [Period] = @Period 

設置@Period參數too match的可用值和數據參數的默認值設置爲自己的matching datasets

現在,當您更改@Period參數時,它會強制重新運行日期數據集,並且您的日期參數將默認爲新結果。