6

私はそれをたくさんグーグルで調べましたが、通常はそれができないことがわかりました。ここでハックの1つに出会いました:

http://www.bp-msbi.com/2011/04/ssrs-cascading-parameters-refresh-solved/

しかし、ssrs 2005 ではうまくいきませんでした。他の誰かが 2005 年に試したのではないかと思っています。

この記事によると、依存パラメーターは、最初のパラメーターの選択によってその値が無効になった場合にのみ更新されます。パラメータが変更されるたびに依存パラメータを無効にできる場合は、完全な更新を強制します。これを行う簡単な方法は、NEWID() T-SQL 関数で取得した GUID などの値を添付することです。

したがって、基本的には、2 つの実際のパラメーターの間に偽のパラメーターを導入したいと考えています。この偽のパラメーターは、その背後にある storedproc がその proc が呼び出されるたびに結果セットに GUID を追加するため、毎回新しい値を返すことになっています。そのため、他のパラメーターの完全な更新が強制されます。

今私が直面している主な問題は次のとおりです。

このフェイク パラメータのデフォルト値を設定します。使用可能な値については、偽のパラメーターの背後にある storedproc が実行され、次のような形式でデータが返されます: result1,result2_GUIDFROMSQL

クエリからデフォルト値を取得するように依頼すると、デフォルト値を設定するために同じstoredprocが再度呼び出されるようになりました。しかし、storedproc が再度実行されると、新しい GUID が取得されるため、古い値が見つからないため、必要に応じて設定されません。

導入されたパラメーターから次のパラメーターにこの GUID を渡すメカニズムを理解する必要があるだけです。

それが私が失敗しているところです。

私の問題は、データソースがこのクエリ文字列であるパラメーターを作成することで簡単に複製できます。

select getdate() id, @name nid 

したがって、この場合、このパラメーターのデフォルト値を設定する方法。

4

4 に答える 4

0

@Abbi の 2 番目のリンクは無効になりました。この記事は現在、 http ://www.optimusinfo.com/multilevel-cascading-select/ にあります。

残念ながら、画像は壊れており、記事はそれらなしでは少し不完全です. 移動した場所で見つけた画像が 1 つあります (適切なバリエーションを試しても他の画像は見つかりませんでした): http://www.optimusinfo.com/wp-content/uploads/2012/07/Multilevel-Cascading -with-Select-All-18.jpeg

これにより、この手法を機能させるために必要な最後の手がかりが得られました。データセット パラメーターのプロパティを設定するときは、パラメーター値を通常の単純な [@City] ではなく、たとえば [@City.Label] として手動で指定する必要があります。 ] ([@City.Value] に対応します。

これは、この手法が「値」を DB で検索できないカスタム値に変更するためです。したがって、ユーザーフレンドリーなデータベースに存在する「ラベル」をパラメーターとして使用する必要があります。(おそらく明らかなはずですが...) レポートビルダーを理解していれば、残りはすべてかなり標準的です。

また、このリンクはそのままでは、複数値のカスケード パラメーターでは機能しないことに注意してください。ただし、そのように変更することは簡単です。パラメータ ストアド プロシージャを値分割関数に結合するように変更するだけです。私はSQL Serverで与えられたudf_splitvarible関数から私のものを適応させました- 宣言された変数を持つ句で

変更はかなり簡単ですが、例を挙げます。これは記事からのものです(ひどいフォーマットが修正されています)。

SELECT 
    l11.CompanyName1+'_'+ CAST(row_number() over( order by  l11.CompanyName1 desc) AS VARCHAR(50) )as CompanyName11
    ,l11.CompanyName
FROM 
(
    SELECT 
        l1.CompanyName+'_'+ CAST(row_number() over( order by  l1.CompanyName asc) AS VARCHAR(50) )as CompanyName1
        ,l1.CompanyName
    FROM 
    (
        SELECT DISTINCT CompanyName
        FROM Customers
        WHERE City IN(@City)
    )l1
)l11
ORDER BY l11.CompanyName ASC

変化する:

SELECT DISTINCT CompanyName
FROM Customers
WHERE City IN(@City)

に:

SELECT DISTINCT CompanyName
FROM Customers
INNER JOIN udf_SplitVariable(@City,',') v ON City = v.Value

これはすべて、SQL Server 2008/Report Builder 3 にも当てはまります。

@borkmarkの回答を理解/適用できませんでした。制限は私の場合には当てはまらないようです。

于 2015-04-29T04:52:26.597 に答える
0

最後に、これを解決することができました。このリンクは役に立ちました。 http://www.optimusbi.com/2012/07/16/multilevel-cascading-select/

基本的には次のとおりです。親パラメーターを変更するたびに依存パラメーターの値が変更されるように、パラメータークエリを記述します。

クエリは、行番号の前に「_」を付けて追加します。そのため、ユーザーが他の値を選択するたびに、行番号が変更されるため、クエリの結果セットが変更されます。

次に、結果セットを使用するときに、アンダースコアの後のテキストを削除して、実際のコードを取得します。

于 2012-07-24T16:13:35.070 に答える