2016-05-06 9 views
0

多くの検索を行った後、以下の問題に適切な答えが見つかりませんでした。SSRS複数のフィールド値がパラメータとして渡されないドリルダウンレポート

私は専門用語と診断でグループ化された月ごとの総アポイントメント数を示す要約レポートを持っています。私は、関連するクライアントの詳細を表示するには、パラメータとして(すなわち11神経合計の仕様、4月のための)=COUNT((Fields!Appointment_ID.Value)で、私は、サブクエリにAppointment_IDsのそれぞれを通過したいフィールドをクリックしてください

Specialty_Name Diagnosis Code Feb Mar Apr 

Neurology  G35X    0  3  4 
       G379    8  5  7 
       Total For Spec 8  8  11 

Rheumatology H051    4  9  2 
       M059    6  10  3 
       Total For Spec 10 19  5 

。ただし、サブクエリを準備してから、以前に使用した方法でレポートをドリルダウンすると、最初のAppointment_IDの結果しか得られません。それぞれではありません。

サブクエリレポートがパラメータ@Appointment_ID VARCHAR(MAX)で設定し、WHERE句れる:

CAST(App.App_ID AS VARCHAR(MAX)) in (
    SELECT * FROM Serve1.dbo.CreateParameterTable(@Appointment_ID,',') 
) 

CreateParameterTableは、サマリーレポートから文字列を処理する必要があり、当社のサーバー上の関数であり、他のレポートでそう。

(
     @StringInput NVARCHAR(MAX)  
    , @SplitBy NCHAR(1) 
) 
RETURNS @OutputTable TABLE ([String] NVARCHAR(36)) 
AS 
BEGIN 

    DECLARE @String NVARCHAR(36) 

    WHILE LEN(@StringInput) > 0 
     BEGIN 
      SET @String = LEFT(@StringInput, 
           ISNULL(NULLIF(CHARINDEX(@SplitBy, @StringInput) - 1, 
              -1), LEN(@StringInput))) 
      SET @StringInput = SUBSTRING(@StringInput, 
             ISNULL(NULLIF(CHARINDEX(@SplitBy, @StringInput), 
                 0), LEN(@StringInput)) 
             + 1, LEN(@StringInput)) 

      INSERT INTO @OutputTable ([String]) 
       VALUES (@String) 
     END 

ドリルダウンレポートに複数のAppointment_IDを手動で入力すると、予想される結果が得られます。したがって、サマリーレポートは文字列を渡さないか、関数によって正しく処理されていないか、サブレポートは私が書いた他のレポートで機能している関数の出力が気に入らないようです。私は困惑している。

+0

、値の式を何のように見える?値の完全な配列(Fields!Appointment_ID.Value)、またはちょうど最初のもの(Fields!Appointment_ID.Value [0])を渡していますか? –

+0

こんにちは。これはあなたの最初の例の通りであり、値の完全な配列を渡す必要があります。ありがとう – Gareth

+0

あなたが期待しているものを通過していることを確認するために、上部のサブレポートにFields!Appointment_ID.Valueを追加できますか?これは問題を絞り込みます...パラメータを送信するレポートまたはサブレポートに問題がありますか? –

答えて

0

あなたが望むような値の文字列を供給することにより、作業サブレポートを取得することができます言ったので、あなたの特定の問題

のトラブルシューティングを開始する方法、問題で区切られた文字列を提供するレポートにある表示されます。問題を修正する前に、区切り文字列がサブレポートに渡されるのを確認する必要があります。そのため、Tablixに追加してください。使用しているのと同じ機能を使用して、[レポートに移動]アクションの値を参照し、それをツールチップとして各カウントに追加します。そうすれば、準備されている文字列を見ることができ、正しく出てくるまでロジックを微調整することができます。私はそれを見るように私はあなたが複数値のパラメータとして達成しようとしているもの

あなたの問題を解決する方法

は、不必要に複雑です。

あなたのtablixには、結果を整理するための設定方法があります。あなたは、専門の名前、診断、月(おそらく、診断または日付の提供)を持っています。

これは、サブレポートに渡すことができる3つのパラメータです。メインレポートに存在するものと同様のSQLロジックを使用すると、これらの3つのフィールドの値と年を知ることによって、それらの11を単離することができます。もちろん、あなたが指定した月に陥る診断/サービスの日付を見つけるために、いくつかの作業を行う必要がありますが、それはあまりにも難しいことではありません:サブレポートにパラメータマッピングで

Where Month(Date_of_Service) = @Month 
    and Year(Date_of_Service) = @Year 
    and Specialty_Name = @Specialty 
    and Diagnosis_Code = @Diagnosis 
+0

多くのありがとう。最初のテストから、サブレポートの3つのパラメータ専門、月、年を使用し、サマリーレポートからそれらを渡すことができます(私が掘り下げている合計は個々の診断ではないので、これを含まない)。私が今理解できないのは、カウントを含むテキストボックスに関連付けられた3つの個別のパラメータを渡すと、そのテキストボックスにカウントされているレコードの一意の識別子(Appointment_ID)を渡すと結果が生成されることです。 – Gareth

+0

区切られた文字列を使用すると、区切り文字列を構築して解析する際に追加の障害点が発生し、そのうちの1つを見つけたように見えます。私の答えが役に立つと分かったら、それをそのようにマークすることを忘れないでください。 –

+0

OK - 多くのありがとう – Gareth