我有一個SSRS報告,其中包含有關我公司發佈的發票的信息,例如金額,日期,付款金額等。我在SSRS 2008(不是R2)中使用Visual Studio 2008環境。我的問題與使用表達式編輯器格式化報告有關。目前,如果發票的金額到期(列)超過0.01(未清發票),則發票將被格式化爲銀質。我們還會發放貸項(負數),這些數額幾乎總是以前發票的負數。SSRS表達式編輯器無法識別嵌入代碼功能
因此,具有發放信用的發票仍然會顯示爲白銀,因爲它的金額應該> 0.01。但是,如果這張發票上有信用卡,它實際上並不出衆,應該是白色的。例如,如果發票是$ 100.00,並且($ 100.00)之後存在信用,則應將原始發票的背景顏色切換爲白色。
下面是代碼解釋的地方。我認爲這可以通過報表中的自定義VB代碼實現,但似乎SSRS中的表達式編輯器無法識別我的函數,因爲它顯示「無法識別的標識符」。我搜索了一下,我遇到的大部分主題都表示它會顯示,但實際上無論如何工作。嗯,我敢肯定,它不工作,因爲我把這個作爲我的表達,並得到全白細胞某列:
=IIF(Fields!Amount_Due.Value > 0.01, IIF(Code.HasCredit(Fields!Amount_Due.Value) = True, "Blue", "Silver"), "Red")
的HasCredit功能如下。
Function HasCredit(ByVal currentAmt as Double) As Boolean
Dim i as Integer
Dim amt as Double
Dim amts as System.Collections.ArrayList = New System.Collections.ArrayList()
Dim negativeAmt as Double
Dim retValue as Boolean = "False"
i = 0
For i = 1 to Report.Parameters!Test.Count()
amt = Report.Parameters!Test.Value(i)
amts.Add(amt)
Next
negativeAmt = currentAmt * -1
If amts.Contains(negativeAmt) Then
retValue = "True"
End If
Return retValue
End Function
當這兩個部分運行時,我得到此列的所有單元格的白色背景。我在網上閱讀了一些說只有共享函數可以工作的東西,但是我發現了多個其他示例,顯示了沒有共享的函數。當我將它分享時,由於Report.Parameters!Test.Count()行,它給了我:BC30369 Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.
。我的想法是使用http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/a7d59224-0ee5-491e-883b-2e5fcb3edeab的Report.Parameters。
所以要重申,我基本上試圖做的是獲得此列中每個單元格的值到一個集合中,並且對於任何兩個金額(其中一個金額具有負等值),請給它一個白色背景而不是銀。
我有與SSRS 2012相同的問題,我也找不到修復程序。但是,正如保羅所說,即使自定義代碼工作正常,它仍然在表達式編輯器中標記爲紅色。 – Alicia 2017-09-22 08:44:12