2016-08-25 82 views
0

我有一個包含多行的數據集。這些列是nameplot; plot是一個二進制圖像文件。例如,如果我想顯示namesecondPlot的情節,我該怎麼做?我只能用=First(Fields!plot.Value, "DataSet1")顯示第一個圖,但沒有任何運氣,檢索plot的值與某個name的值。使用SSRS表達式中的where子句

我發現如果IIf函數,但我不確定它的用法,或者它是否實際上我正在尋找什麼。例如,=First(IIF(Fields!name.Value = "secondPlot", Fields.plot.Value, Nothing))給出錯誤「報告的定義」/ MainReport'無效「。

爲了說明問題,我在Insert> Image> Database source中輸入了這個信息。

+0

您是否允許用戶選擇當前正在顯示哪個繪圖?或者您是否試圖在一個數據集中檢索所有情節圖像並同時顯示? – Aidan

+0

@Aidan也沒有。我只想顯示一個具有我指定名稱的單個繪圖,而不是一個恰好是數據庫中第一個繪圖的繪圖。 – clb

+0

您應該使用報表參數並在基礎查詢中使用該參數。 – HardCode

回答

0

將tablix組件添加到您的報告中,然後將您的數據集分配給DataSetName屬性中的Tablix。

刪除只留下文本框的列和行。右鍵單擊Tablix並選擇Tablix properties...轉到過濾選項卡並添加一個新的過濾器。

enter image description here

表達選擇Name,運營商=和值使用="secondPlot"

該tablix將過濾包含secondPlot名稱的行,並且您可以通過在填充選項卡中配置背景圖像屬性在tablix文本框中顯示該圖像。

右鍵單擊文本框並選擇Textbox properties/Fill選項卡,在背景圖像窗格中使用像這樣的設置。

enter image description here

UPDATE:

如果圖像是PNG,BMP,JPEG,GIF或X-PNG,你可以選擇合適的MIME類型。

此外,如果你的形象是Base64編碼,您可以嘗試:

=System.Convert.FromBase64String(Fields!Plot.Value) 

Use this field:表達。

不要對文本框使用任何表達式。只需使用圖像字段作爲文本框背景。

讓我知道你是否需要進一步的幫助。

+0

感謝您的迴應。這看起來非常有希望,我順利完成了最後的指令!你能否澄清你的意思是「你可以在tablix文本框中顯示圖像」?如果我右鍵單擊文本框並選擇表達式,那麼我嘗試在'= Fields!plot.Value'中輸入內容,但是當它呈現它時,文本框只是空白。如果將其設置爲'= Fields!name.Value',則會發生同樣的情況,因此這不僅僅是情節本身的問題。這不是我應該設置的地方嗎? (更新:我也嘗試通過右鍵點擊選擇文本框屬性來設置它,也無濟於事)。 – clb

+0

@Cal,檢查我的更新。 –

+0

謝謝,儘管不幸,它仍然無法正常工作。我只是看到一個空的文本框,好像我沒有做任何事情...... – clb