初めてSSRSのすばらしい世界を扱っています。私のニーズに合ったレポートを作成するために、レポートビルダーを使用しています。SSRSがカスタムストアドプロシージャクエリにパラメータを送信する
だけで正常に動作し、接続している:私は先に行って、私のデータソースを作成した白紙を作成する際に
。だから私は先に行くとデータセット作成:
再び私は必要なストアドプロシージャを見つけ、それに接続されています。今データセットフォルダの下で、それは次のようになります。正しい
...が、同時に - 正しくありません。
再び正しいですが、私は私のレポートページにそれを使用することはできないように見えるどの:
今パラメータフォルダは次のようになります。クエリーに渡すためには、これらのすべてのパラメータが必要です(この場合は1だけ必要です、ユーザーID)。
だから私は、空白のレポートページ内で右クリックして、挿入を選択 - >テーブルを、ページ上のテーブルを配置します。レポートページ・テーブルにちょうどVAL1をドラッグし、それを実行しているとき - これは私が手に出力されます:
を本当にそれがパラメータだったときには、「クエリ出力」として、すべての1のを配置しますそのユーザーIDの戻り情報を照会するために入力します。
私のストアドプロシージャがこの(原因、それは大であることに削減)のようになります。
USE [B2017]
GO
/****** Object: StoredProcedure [dbo].[spFetchApproved] Script Date: 10/26/2017 2:26:09 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spFetchPending] (
@val1 VARCHAR(100) = null,
@val2 VARCHAR(100) = null,
@val3 VARCHAR(100) = null,
@val4 VARCHAR(100) = null,
@val5 VARCHAR(100) = null
)
AS
BEGIN TRY
SET NOCOUNT ON;
DECLARE @version VARCHAR(30);
SET @version = OBJECT_NAME(@@PROCID);
/************************************/
/* The Query */
/* 1=text | 2=datetime | 3=else */
/************************************/
EXEC [dbo].[_chkQ]
'SELECT
BL.number,
BL.line,
tOf.name AS type,
E.name AS environment
[more code here....]
WHERE
LINK_userTblID = @val1
AND
stage = 2
GROUP BY
[more code here.....]',
@version,
@val1, 3
END TRY
BEGIN CATCH
/************************************/
/* Get Error results back */
/************************************/
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
/************************************/
END CATCH
そしてまた、そのが[DBO]に行く参照[_ chkQ](もダウントリミング):。
USE [B2017]
GO
/****** Object: StoredProcedure [dbo].[_chkQ] Script Date: 10/26/2017 2:57:20 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_chkQ] (
@ParameterSQL VARCHAR(MAX),
@ver VARCHAR(30),
@val1 VARCHAR(MAX) = null,
@val1Type int = null,
@val2 VARCHAR(MAX) = null,
@val2Type int = null,
[more code here...]
)
AS
DECLARE @SQL NVARCHAR(MAX);
DECLARE @IDENTITY INT;
BEGIN
IF (@val1 IS NOT NULL)
BEGIN
IF (@val1Type = 1)
SET @ParameterSQL = replace(@ParameterSQL, '@val1', '''' + @val1 + '''');
ELSE IF (@val1Type = 2)
SET @ParameterSQL = replace(@ParameterSQL, '@val1', '''' + @val1 + '''');
ELSE
SET @ParameterSQL = replace(@ParameterSQL, '@val1', @val1);
END
IF (@val2 IS NOT NULL)
[more code here...]
END
print @ParameterSQL
IF CHARINDEX('INSERT ', @ParameterSQL) > 0
BEGIN
SET @SQL = @ParameterSQL;
EXECUTE sp_executesql @SQL;
SET @IDENTITY = (SELECT @@IDENTITY AS Returned);
END
ELSE IF CHARINDEX('DELETE ', @ParameterSQL) > 0
[more code here...]
PRINT @SQL;
DECLARE @ExitSQL NVARCHAR(MAX);
SET @ExitSQL =
'SELECT
CONCAT(
OBJECT_NAME(@@PROCID),
'' '',
LEFT(modify_date, 11),
'' ('',
DATEDIFF(day, LEFT(modify_date, 11), GETDATE()),
'' days ago)''
) AS CurrentVersion,
CONCAT(' + CHAR(39) +
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(@SQL, CHAR(13), ''),
CHAR(10), ''),
' ', ''),
' ', ''),
'''', '''''') +
CHAR(39) +
', '''') AS theQuery
FROM
sys.objects
WHERE
type = ''P''
AND
name = ''' + @ver + '''';
EXECUTE sp_executesql @ExitSQL
私のASP.netページでは、通常、ストアドプロシージャと呼ばれ、SPに必要な値を送信します。しかし、私はそれを行うためにここでそのオプションを持っているようには思われません?
私は必要なようにレポートを作成することができます(デザインは賢明です)また、ASP.netページから呼び出すことができます(つまり、この場合はユーザーIDとして1を、レポートのクエリ出力を収集するストアドプロシージャに?)
ReportViewerコントロール –
を使用します。申し訳ありませんが、ASP.net MVC @WEI_DBAを配置することを意味します。そしてBTWは**私は設計**で**レポートを構築するのに役立つことはありません。 – StealthRT
これがあなたが探しているものかどうか確認してください。 https://code.msdn.microsoft.com/How-to-Display-SSRS-report-e3f6be05 –