2

私は SQLServer の世界に比較的慣れておらず、一緒に働いている会社のために SSRS 2005 を学ぼうとしているので、研究で明らかな答えを逃した場合はご容赦ください。

私が抱えている問題は、レポートがレポート サーバーによって更新されたときにのみ、ユーザーがメイン テーブルを列で並べ替えることができるレポートを持っていることです。ユーザーの並べ替えはリセットされます。これは、日常業務のほとんどでこのレポートを使用している現場のユーザーから多くの不満を引き起こしています。

レポートは基本的に、指定されたパラメーターとストアド プロシージャによって返されるデータに基づいて複数の結果を返す 1 つのテーブルです。ソート機能は、各列のテーブル ヘッダーにユーザー ソートを設定することによって実現されます。

どんな助けでも大歓迎です。

4

1 に答える 1

0

レポートを 1 日中使用しているが、別の方法で並べ替えているユーザーが多数いる場合は、レポートの使用方法が異なる原因となるその他の要件を最初に確認します。並べ替えは氷山の一角であることがわかるかもしれません。複数のユーザー グループが、複数のカスタム作成レポートを使用できる場合に、1 つのレポートで十分に機能している場合です。

更新によって並べ替えと並べ替えを維持できるようにするには、動的ストアド プロシージャを介してパラメーター化されたレポートを使用します。もっと簡単な方法があるかもしれませんが、これでうまくいくはずです。ただし、動的クエリ ソースのフィールドに手動でラベルを付ける必要があります。FieldSource が列名と同じであることを確認してください。そうすれば、データを正しく取得してセルに値を割り当てることができます。

例 列の並べ替えの選択:

CREATE PROC getSortColumns 
AS
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'DimEmployee' AND TABLE_SCHEMA='dbo'

次に、ソート順を使用する動的 sproc を作成します。

CREATE PROC getEmployees ( @OrderByClause varchar(100) ) AS

-- Create a variable @SQLStatement
DECLARE @SQLStatement varchar(255)

-- Enter the dynamic SQL statement into the
-- variable @SQLStatement
SELECT @SQLStatement = 'SELECT Title, FirstName, LastName, HireDate, Status ' +
                       'FROM dbo.DimEmployee ORDER BY ' + @OrderByClause

-- Execute the SQL statement
EXEC(@SQLStatement)

クエリが手動で機能していることをテストできます。

exec getEmployees @OrderbyClause = LastName

BIDS では、フィールドがクエリにないという警告メッセージが表示されます。このソリューションは SQL 2012 でテストしたため、以前のエディションでは機能しない可能性があります。残念ながら確認できません。

列名用とクエリ用の 2 つのデータ セットを作成します。列名のデフォルトと値を通常どおりに設定し、メイン データセットのクエリ フィールドに手動で名前を付けてリストします。そうしないと、クエリ内のフィールドが認識されません。

特に保守可能ではありません...レポート要件を最初に調査することは間違いありません。お役に立てれば!

動的クエリの説明については4 Guysを参照し、列名の取得の説明についてはこの質問を参照してください

于 2012-12-24T20:18:13.637 に答える