2012-07-06 153 views
11

我剛剛創建了SQL Server 2005 SSRS報告,並且數據未顯示在「預覽」窗格中。SSRS報告不顯示數據

數據集正確地從存儲過程填充爲String參數。我可以在「數據」窗格中執行它。當運行報告在預覽窗格中的行顯示的正確數目,但該單元格的內容不包含任何數據

Missing Data

源數據集是基於一個存儲過程在字符串參數的傳遞在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數據集

enter image description here

SSRS數據集映射

enter image description here

SSRS數據集參數 enter image description here

執行數據集與參數

enter image description here

有對所顯示的表中沒有其他分組,過濾器或聚集。這只是一張平坦的表

+0

By mistakely您是否更改了要隱藏的單元格的初始可見性屬性? – praveen 2012-07-06 09:32:19

+0

不,隱藏是所有項目的錯誤 – 2012-07-06 09:33:47

+0

哎呀,我從來沒有看到你使用臨時表。我認爲問題是ssrs無法獲取元數據,因爲你正在使用臨時表 – praveen 2012-07-06 10:12:19

回答

6

使用臨時表時,SSRS無法獲取元數據。所以基本上有兩種讓SSRS知道列名的方法:

  1. 添加SET FMTONLY ON。這將檢索元數據,但不會顯示數據。

  2. 轉到數據選項卡並單擊通用查詢設計器,然後單擊刷新字段。這會提示一個對話框來指定參數值。當我們在查詢設計器中運行查詢時,SSRS從存儲過程中獲取模式和數據。現在數據將在預覽窗格中可用。

8

以前從來沒有見過。但是,SSRS有時可能會「關閉」,所以這裏列出一些要嘗試的事情。我恐怕大部分都是這種類型的:「你試過關掉它嗎?」。

  • 刪除.data文件與報告相關聯。
  • 複製/備份報告,並嘗試將數據集添加到新的基本Tablix以查看它是否顯示數據。
  • 查看隱藏屬性。不要忘記(有些愚蠢的原因),它不是(就像任何其他理智的產品一樣)一個可見 Y/N字段,但是一個隱藏 Y/N字段。
  • 仔細檢查字體顏色和大小
  • 運行在您的reportserver(而不是預覽)的報告檢查如果這樣做的工作。
  • 使用一些臨時文本框顯示您的參數的實際值,以檢查它們是否與您測試運行數據集時完全相同。
  • 檢查代碼隱藏(rdl中的xml)意外過濾器,隱藏屬性,表達式等在Tablix中。即使你不能「閱讀」RDL,但用語法突出顯示你應該能夠瀏覽它並提取大量關於此的信息。
  • 檢查ExecutionLog2和其他日誌記錄的東西,以查看報告運行中返回的行數。

    • 沒有Tablix中有什麼樣的分組:

    此外,如果您更新/提供更多的一些信息編輯您的問題,這將有助於?

  • 什麼是tablix,行組和列組上的篩選器?
  • 數據集的一般結構是什麼?它的結果是什麼?
  • 參數的結構和使用方式如何?
0

我有同樣的問題。這是我發現的。這裏是我的代碼:

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」,以確保如果在代碼中指定的任何錯誤信息的最後SELECT語句前返回的數據集,SSRS能夠確定存儲過程中的字段。然後,當結果被確定時,我給字段分配了一個別名。問題在於這些字段的別名與聲明的字段名稱不匹配(即:聲明的字段「GaugeColor」與我在select中提供的別名「[Product]」不匹配以創建結果集。意識到這是當我刷新SSRS報告的數據部分的字段,然後顯示數據集字段時,它列出了表格聲明中的字段名稱(即:「GaugeColor」)。當我在數據集中執行存儲過程時(點擊!),SSRS中列出的結果集顯示了字段別名(即:「Product」)。由於這些不匹配,我沒有在文本框中顯示任何字段(即:「= Fields !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 

0

我曾在那裏工作報告顯示停止數據的情況。我添加了另一個沒有格式的表格,鏈接到相同的數據集 - 驗證了當通過SSRS傳遞參數時,查詢不再返回數據。經過調查,我發現我的測試參數爲「錨定日期」值被格式化爲YYYY-MM-DD,在我更新的查詢中,我正在假設有關日期參數中的字符順序(截斷爲YYYY -MM爲一個連接)。

我懷疑SSRS可能會以不同的格式傳遞日期(MM/DD/YY是我當前的日期默認文化設置)。因此,用這種預感運行,我改變了我的SQL邏輯以使用任何通過的日期格式。 - 例如左(convert(date,@anchorDate,20),7)

這解決了我的問題 - 我測試過的格式假設(硬編碼值在開發時測試查詢)是不好的假設。 SSRS也可以以本地格式傳遞數據 - 所以一定要留意這種假設。

0

我也有類似的問題。就我而言,它甚至沒有任何參數或任何東西,只是您可以想象的最簡單的報告。它包括一張單一字段的表格,沒有使用過濾器。我確實設法查看了一些數據,但只顯示了那些不符合單元格的行,從而強制增加行高。

我對此問題的修復:從標準(尺寸10,Segoe UI)更改字體或字體大小。然後,顯示所有數據。將此更改回Segoe UI使數據再次消失。