1

ストアドプロシージャの結果セットに基づいてパラメータを選択する方法を知りたいと思います。今SSRS 2014のストアドプロシージャの結果セットに基づいてパラメータ値を取得する方法はありますか?

CREATE PROCEDURE usp_UserInformation (@ReportRunDate DATE = NULL) 
AS 
WITH CTE AS (
SELECT -- some fields 
FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID 
WHERE RegisteredDate = DATEADD(MONTH, DATEDIFF(MONTH, -1, @ReportRunDate) - 2, -1) 
--I'll output the result set after applying all the logic like 

SELECT UserID, UserName, DOJ 
FROM CTE 

、ユーザーから値を取得する」を使用して、私は別のパラメータを作成し、「使用可能な値」からレコードを取得しようとしている報告書の日付を選択します。

私のコードは次のようになりますクエリ '。上記のクエリ結果セットからUserIDのリストを表示し、それに基づいてユーザーのSELECTを許可したいと思います。

Parameters

Available Values for Parameters

Values from Query

Design View

5th image

UPDATE:なしパーソナルプラグインが存在しないように私は別のストアドプロシージャを作成している r代替。今私の質問は、どのようにWHERE節の最初のものに2番目のストアドプロシージャの値を渡すのですか?

CREATE PROCEDURE usp_UserInformation (@ReportRunDate DATE = NULL) 
AS 
WITH CTE AS (
SELECT -- some fields 
FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID 
WHERE RegisteredDate = DATEADD(MONTH, DATEDIFF(MONTH, -1, @ReportRunDate) - 2, -1) 
--I'll output the result set after applying all the logic like 

SELECT User_ID, UserName, DOJ 
FROM CTE 
WHERE User_ID = EXEC usp_Get_UserID 

私はこのようなユーザーが最初にIDを選択し、レポートで自分の任意の日付を選択できる場所を探しています。

Report Parameters

PS:私はインラインSQLを記述することはできません午前のみのSPが許可されています。同じレポートに対して2つのSPを作成する必要はありません。

答えて

0

UserIDパラメータのために利用可能な値のソースとして、このストアドプロシージャを使用し、UserIDパラメータが AFTER ReportDateパラメータを来ていることを確認してください。ユーザーがReportDateを選択するまで、UserIDの使用可能な値は入力されません。次に、この手順は、ユーザーが選択したReportDateを使用して実行されます。

また、DataSetパラメータ(最後のスクリーンショット)から@User_IDパラメータを削除する必要があると思います。ストアドプロシージャには、ReportRunDateというパラメータのみがあります。 SSRSデータセットのパラメータは、呼び出しているストアドプロシージャのパラメータと一致する必要があります。このエラーについて

The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error.

あなたが最後にあなたのSSRSレポートを編集し、そして今では期待値を返さない後に、ストアドプロシージャのコードが変更されたようですね。プロファイラトレースを使用して、SSRSからSQL Serverに送信されるコマンドを確認し、そのコマンドをSSMSで実行して結果を確認します。返される列名は何ですか?それらはあなたのデータセットのFieldsタブの同じ名前ですか?レポートパラメータにはValue FieldLabel Fieldと同じ名前ですか?

+0

私はこれを試してみましたが、それは動作しませんでしたが。 UserIDドロップダウンリストには、SPの実際の結果セットに存在しない数値(たとえば、-1の値またはいくつかの0など)が表示されます。また、[利用可能な値]オプションを選択してUserIDを取得すると、SSRSのドロップダウンリストにロードするのに多くの時間がかかります。 – Julaayi

+0

OK、自分のOPにスクリーンショットを追加しました。 – Julaayi

+0

OPの最後に別のスクリーンショットを追加しました。あなたはそれについて話していますか? – Julaayi

0

多くの専門家からアドバイスを得て、スタンドアロンSQLを使用して終了しました。これはUser_IDです。ストアドプロシージャに別のパラメータを追加し、スタンドアロンSQLのパラメータに2番目の値を渡しました。

CREATE PROCEDURE usp_UserInformation (@ReportRunDate DATE = NULL, @User_ID VARCHAR(10)) 
AS 
WITH CTE AS (
SELECT -- some fields 
FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID 
WHERE RegisteredDate = DATEADD(MONTH, DATEDIFF(MONTH, -1, @ReportRunDate) - 2, -1) 
AND UserID = @User_ID 
--I'll output the result set after applying all the logic like 

SELECT UserID, UserName, DOJ 
FROM CTE 

そして、私のスタンドアロンのSQLは次のようになります。

SELECT DISTINCT User_ID 
FROM MyTable 
ORDER BY User_ID 
関連する問題