2

我讀過other posts,它建議在頭中顯示動態數據時使用參數,因爲它在pdf中正確呈現。我正試圖實施該解決方案,但遇到了問題。它在爲參數返回數據時有效,但如果數據未返回,則會引發錯誤。這裏是我的設置:在頁眉中使用報表參數

  • 隱藏
  • 允許空值
  • 允許空值
  • 可用值:從查詢
  • 默認值:從查詢

文本框我標題具有以下值:

=IIf(IsNothing(Parameters![Report Parameter Name].Value), "", Parameters![Report Parameter Name].Value) 

時的默認值沒有返回行,則顯示錯誤:

The '[Report Parameter Name]' parameter is missing a value.

我是新來的報告服務,所以我可能會丟失一些大的概念。對我來說,沒有數據返回符合允許空值條件。

回答

1

使用IIF的情況下與IsNothing,也在類似的鴻溝零案件的問題是,它不是一個語言構造,它實際上是一個函數。因此,在調用函數之前評估參數,這意味着您認爲不應該評估的表達式實際上是在函數調用之前評估的。

我知道似乎瘋狂的是,IF表達式的真假部分都是經過計算的,但將其視爲函數調用而不是語言功能。在語言中沒有路徑短路,錯誤是在調用函數之前計算所有參數。

您可以用自定義代碼函數替換它,以達到與之後相同的效果。因此,沿着以下幾行:

右鍵單擊報告的正文並選擇「屬性」。單擊代碼選項卡,並輸入以下代碼:

Public Function GetParamVal(ByVal ParamVal) As String 
    If IsNothing(ParamVal) Then 
     Return "" 
    Else 
     Return ParamVal 
    End If 
End Function 

然後把它在你的頭,像這樣:

=Code.GetParamVal(Parameters!MyParam.Value) 

(我不是一個系統的前面上測試這一點,但你應該得到想法)

+0

哦哇,謝謝你的解釋。我不使用VB,所以我不熟悉IsNothing和IIF的細微差別。 – rboone 2011-05-20 18:15:07

相關問題