レポートを 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を参照し、列名の取得の説明についてはこの質問を参照してください