簡體   English   中英

SQL查詢中的SSRS報告參數處理

[英]SSRS Report Parameter handling in SQL Query

我有一個SSRS報告,可以在其中傳遞開始日期和結束日期以過濾數據。 我需要獲取那些在傳遞的日期值之間有數據的記錄。我有如下查詢..

SELECT * FROM Sample s WHERE s.RecStartDate >= ISNULL(@StartDate,s.RecStartDate)
AND s.RecEndDate <= ISNULL(@EndDate,s.RecEndDate)

在這里,我必須處理“ NULL”,並且數據來自兩個不同的字段。 但是問題是,在我的SSRS報告中,這兩個日期的默認值為“今天”。 當我選擇@StartDate作為'TODAY'和@EndDate作為10/12/2010時,它將無法按照上述條件工作。 請幫我解決這個問題。

謝謝你蘇

創建以下過程,並在報表的數據集中使用此存儲過程。

CREATE PROCEDURE dbo.SomeReportProc
@StartDate DATETIME,
@EndDate   DATETIME
AS
BEGIN
  SET NOCOUNT ON;

   DECLARE @Sql NVARCHAR(MAX);

 SET @Sql = N'SELECT * FROM Sample s WHERE 1 = 1 '
            + CASE WHEN @StartDate IS NOT NULL 
                  THEN N' AND s.RecStartDate >= @StartDate ' ELSE N'' END
            + CASE WHEN @EndDate IS NOT NULL 
                  THEN N' AND s.RecEndDate <= @EndDate '     ELSE N'' END

   EXECUTE sp_executesql @Sql
                        ,N'@StartDate DATETIME, @EndDate DATETIME'
                        ,@StartDate
                        ,@EndDate

END

注意

還要確保將參數類型選擇為datetime以便當用戶輸入日期時,他們使用該漂亮的GUI來選擇日期,而不是以不同的格式插入日期。

日期時間參數開啟報告

在此處輸入圖片說明

日期時間參數屬性

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM