SQL Server 2005 SSRSレポートを作成しましたが、データがプレビューウィンドウに表示されていません。
データセットは、Stringパラメーターに対してストアドプロシージャから正しく設定されます。データペインで実行できます。プレビューペインでレポートを実行すると、正しい行数が表示されますが、セルの内容にはデータが含まれていません
ソースデータセットは、一時テーブルの内容を返すSQL Server 2005の文字列パラメーターで渡されるストアドプロシージャに基づいています。次に、データセットはフィールドをローカルにマップします。これをデータビューで正しく実行できます。
ストアドプロシージャ
ALTER PROCEDURE spWebReportStage25BuildReview
@BuildNumber as nvarchar(50)
一時テーブルスキーマ
CREATE TABLE #tmpModelZones
(
BuildID bigint NOT NULL,
BuildNo nvarchar(50) NOT NULL,
ModelID int NOT NULL,
ModelName nvarchar(50) NOT NULL,
ZoneID int NOT NULL,
ZoneName nvarchar(50) NOT NULL,
SortOrder int NOT NULL,
Created bit DEFAULT 0 NOT NULL,
Closed bit DEFAULT 0 NOT NULL,
PRIMARY KEY (BuildID, ZoneID)
)
SSRSデータセット
SSRSデータセットマッピング
SSRSデータセットパラメーター
パラメータ付きのデータセットの実行
表示されたテーブルには、追加のグループ化、フィルター、または集約はありません。単なる平らなテーブルです
一時テーブルを使用する場合、SSRSはメタデータの取得に失敗します。したがって、SSRSに列名を知らせるには基本的に2つの方法があります。
追加 SET FMTONLY ON
。これによりメタデータが取得されますが、データは表示されません。
[データ]タブに移動し、[汎用クエリデザイナー]をクリックして、[フィールドの更新]をクリックします。これにより、パラメータ値を指定するためのダイアログボックスが表示されます。クエリデザイナでクエリを実行すると、SSRSはストアドプロシージャからスキーマとデータを取得します。これで、データがプレビューペインで利用可能になります。
これを見たことがない。ただし、SSRSは時々「オフ」になることがあるので、試してみるべきことのリストを示します。これらのほとんどは、「電源を切ってから入れ直してみましたか?」というタイプのものだと思います。
.data
ファイルを削除.さらに、質問を更新/編集するとさらに情報が得られます。
同様の問題もありました。私の場合、パラメータや何もなしで発生しました。想像できる最も単純なレポートです。単一のフィールドを持つテーブルが含まれ、フィルターは使用されませんでした。なんとかデータを表示することはできましたが、セルに収まらない行のみが表示されたため、行の高さが強制的に増加しました。
この問題に対する私の修正:フォントまたはフォントサイズを標準(サイズ10、Segoe UI)から変更します。その後、すべてのデータが表示されました。これをSegoe UIに戻すと、データは再び消えました。
同じ問題がありました。これが私が見つけたものです。ここに私のコードがあります:
DECLARE @tblPigProblems TABLE (
Id INT IDENTITY,
PPId INT,
GaugeColor VARCHAR(25),
FullStartTime VARCHAR(25),
PigSystem VARCHAR(25)
)
IF (1 = 0)
BEGIN
SELECT * FROM @tblPigProblems
END
...
SELECT '@tblPigProblems' [PigProblems],
@p_vchLine [Line],
GaugeColor [Product],
FullStartTime [Start Time],
PigSystem [Pig System]
FROM @tblPigProblems
最初の "SELECT * FROM @tblPigProblems"を使用して、データセットを返す最終的な選択ステートメントの前にコードでエラーメッセージが指定された場合、SSRSがストアドプロシージャからフィールドを決定できるようにしました。次に、結果が決まると、フィールドにエイリアスを割り当てました。問題は、フィールドのエイリアスが宣言されたフィールド名と一致しないことです(つまり、宣言されたフィールド「GaugeColor」は、結果セットを作成するためにselectで指定したエイリアス「[Product]」と一致しませんでした。これは、SSRSレポートのデータセクションのフィールドを更新し、データセットフィールドを表示したときに、テーブル宣言からフィールド名がリストされた(つまり、「GaugeColor」)ことです。 (!をクリックすると)、SSRSにリストされた結果セットにフィールドエイリアスが表示されました(例: "Product")。これらは一致しなかったため、フィールドを割り当てたテキストボックスに何も表示されませんでした。 !ColorGauge.Value ")。SSRSはこの不一致を検出せず、レポートの作成を許可しましたが、値の表示は許可しませんでした。修正は簡単でした。
IF (1 = 0)
BEGIN
SELECT * FROM @tblPigProblems
END
で:
IF (1 = 0)
BEGIN
SELECT '@tblPigProblems' [PigProblems],
@p_vchLine [Line],
GaugeColor [Product],
FullStartTime [Start Time],
PigSystem [Pig System]
FROM @tblPigProblems
END
ダン
作業レポートでデータの表示が停止する場合がありました。同じデータセットにリンクされた、書式設定のない別のテーブルを追加しました。SSRSによってパラメーターが渡されたときに、クエリがデータを返さないことを確認しました。調査した後、「アンカー日付」値のテストパラメーターがYYYY-MM-DDとしてフォーマットされていることに気づき、更新されたクエリで、日付パラメーターの文字の順序について想定していました(YYYYに切り捨てます) -MMは1つの結合になります)。
SSRSが別の形式で日付を渡しているのではないかと疑っていました(MM/DD/YYは現在のデフォルトの日付の文化的設定です)。そのため、その思いつきで実行して、渡された日付形式で動作するようにSQLロジックを変更しました。 -例left(convert(date、@anchorDate、20)、7)
これは私の問題を修正しました-私がテストしたフォーマットの仮定(開発中にクエリをテストするためにハードコードされた値)は悪い仮定でした。 SSRSは、ローカル形式でもデータを渡すことができます。したがって、この種の仮定に注意してください。