2017-10-04 12 views
0

ストアドプロシージャを呼び出すSSRSレポートがあります。レポートビルダーを使用してSSRSで今日の日付までにSQLデータセットをフィルタリングしようとしています

USE [TSC-Telaid] 
GO 
/****** Object: StoredProcedure [dbo].[TW_spRPTAllReceiverInventory] Script Date: 10/4/2017 2:06:58 PM ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 



ALTER PROCEDURE [dbo].[TW_spRPTAllReceiverInventory] 
@SiteId varchar(50), 
@ReceiverId int 
AS 

BEGIN 

DECLARE @SQL varchar(8000), @Index int, @Value varchar(500), @Source varchar(100) 

SELECT @Index = CHARINDEX('Initial Catalog=', ConnectionString) + 16, @Value = ConnectionString 
FROM CustomerSetting 
WHERE SiteId = @SiteId 

SET @Source = '[' + SUBSTRING(@Value , @Index, CHARINDEX(';', @Value, @Index) - @Index) + ']' 

SET @SQL = 'SELECT R.SiteId, L.* 
     FROM ' + @Source + '.[dbo].[vwReceiver] R JOIN ' + 
      @Source + '.[dbo].[vwInventory] L ON R.ReceiverId = L.ReceiverId 
     WHERE R.ReceiverId = ' + CAST(@ReceiverId as varchar) 

EXEC(@SQL) 

END 

私はデータセットに@SiteId & @ReceiverIDに渡します。ここでの手順です。私が返すフィールドの1つはDateReceivedです。 DateReceived = today()だけを返すようにデータセットをフィルタリングしたいが、それは機能していない。私はいないよ& DateAdd関数( "D"、1、今日())

-

私はまた、DateAdd関数BETWEEN DateReceivedにフィルタ式(1、今日() "d" を、)を設定しようとしましたSQLは新しくSSRSはかなり新しいです。

+0

これは有効な構文ではありません。日付部分の識別子( ''' d''')の前後の引用符を削除し、 'today()'を 'getdate()'に変更してください。あるいは、あなたは 'どこでDateReceived> =キャスト(getdate()として日付)'のようなことをすることができます。それは現在の日付から真夜中のすべてにあなたを得るでしょう。 – Xedni

+0

@Xedri OPはSSRS関数を使用しているので、 'today'が有効です。 @drew jacksonあなたの 'DateReceived'カラムは日付または日付の時刻を返しますか? –

+0

それはdatetimeを返します –

答えて

0

私はそれを理解したと思います。式を次のように調整しなければなりませんでした:

DateReceived is between =DateAdd(DateInterval.Day, 0, Today()) AND =DateAdd(DateInterval.Day, 1, Today()) 

これは動作しているようです。

関連する問題