页脚中的SSRS页码

时间:2012-12-16 07:32:56

标签: reporting-services

我希望不包括报告前10页的页码(在页脚中)(即第1-10页)。第1页应阅读i,第2页应阅读ii,第3页应阅读iii等等(罗马数字)....当它到达第11页时,这应重置页码

有谁知道我可以用来实现这个目的的表达式。因此,如果GlobalPage number = 1,2,3,4,5,6,7,8,9,10不显示,或者补偿全局页码以获取其他内容.....这是否可行。

2 个答案:

答案 0 :(得分:3)

您必须手动更改值,即在页脚中添加类似以下内容的内容:

IIf(Globals!PageNumber=1, "i", ...

另外,您可以使用用户函数try VBA for number to roman numeral

答案 1 :(得分:0)

我们会使用一些自定义代码来保持灵活性。 Microsoft have some code to do the Roman numeral conversion所以我们会适应这一点。

让我们添加我们需要的自定义代码:一个函数将整数转换为罗马数字,一个函数计算出要提供的数字类型。

Function PageNumber(page As Integer, startArabic As Integer) As String
  If page <= startArabic Then
    PageNumber = IntegerToRoman(page)
  Else
    PageNumber = (page - startArabic).ToString()
  End If
End Function

Function IntegerToRoman (ByVal N As Integer) As String
  Const Digits = "ivxlcdm" 
  Dim I As Integer
  Dim Digit As Integer
  Dim Temp As String 

  I = 1 
  Temp = "" 

  Do While N > 0 
    Digit = N Mod 10 
    N = N \ 10 
    Select Case Digit 
      Case 1 
        Temp = Mid(Digits, I, 1) & Temp 
      Case 2 
        Temp = Mid(Digits, I, 1) & Mid(Digits, I, 1) & Temp 
      Case 3 
        Temp = Mid(Digits, I, 1) & Mid(Digits, I, 1) & Mid(Digits, I, 1) & Temp 
      Case 4 
        Temp = Mid(Digits, I, 2) & Temp 
      Case 5 
        Temp = Mid(Digits, I + 1, 1) & Temp 
      Case 6 
        Temp = Mid(Digits, I + 1, 1) & Mid(Digits, I, 1) & Temp 
      Case 7 
        Temp = Mid(Digits, I + 1, 1) & Mid(Digits, I, 1) & Mid(Digits, I, 1) & Temp 
      Case 8 
        Temp = Mid(Digits, I + 1, 1) & Mid(Digits, I, 1) & Mid(Digits, I, 1) & Mid(Digits, I, 1) & Temp 
      Case 9 
        Temp = Mid(Digits, I, 1) & Mid(Digits, I + 2, 1) & Temp 
    End Select 

    I = I + 2 
  Loop 

  IntegerToRoman = Temp 

End Function 

为了使报告更加灵活,我们将添加一个参数,以便何时恢复为阿拉伯数字(如果报告变长,我们在某个阶段需要超过10个罗马数字)。我们称之为@StartArabic,它将是一个默认值为10的整数。所以现在我们的页码表达式就是:

="Page " & Code.PageNumber(Globals!PageNumber, Parameters!StartArabic.Value)