SSRS自动编号但带字母

时间:2014-10-16 16:12:49

标签: sql reporting-services formatting reporting

也许这很简单,我遗漏了一些东西,但我正在制作一份包含大量记录的SSRS报告,然后每条记录都可以有多条记录与之关联。我想要的是动态生成父记录编号的报告,以及孩子的字母编号。例如:

  1. 父项目一 a)第一个孩子
    b)第二个孩子

  2. 父母项目2 a)第一个孩子b)第二个孩子
    c)第三个孩子

    我使用带有SSRS插件的Visual Studio 2012,但我也有BIDS 2008.我能够通过使用此函数生成父编号:= RunningValue(Fields!ParentItem.Value,CountDistinct," ParentGroup& #34)。我尝试使用工具栏中的编号工具,但它只是插入" 1。 "在每条记录前面,无论它是什么项目编号。真正的麻烦是让函数生成字母而不是数字。是否有捷径可寻?

2 个答案:

答案 0 :(得分:0)

想出办法。我使用了与子项上的父编号相同的方法来获取隐藏文本框的值。然后我创建了另一个文本框,我希望出现字母编号,并使用开关表达式根据隐藏文本框的值设置值。可能不是最好的方法,但它的工作原理

答案 1 :(得分:0)

我创建了两个函数,一个用于父行号,第二个用于子行号(即一个b c ..)。这个函数在报告属性 - >代码中。功能如下

对于父行号: -

Dim private count as integer = 0
Dim private iniRow as integer = 0
Public function ParentRowNum(Byval rowNum as integer) as integer
   if iniRow = 0 then
      iniRow = rowNum
   end if

   if rowNum = iniRow then
       count = 0
   end if
   count = count + 1
   Return count
End function

对于Child行号: -

Dim private count_ascii as integer = 96
Dim private iniRow_sub as integer = 0
Public function ChildRowNum(Byval rowNum_sub as integer) as string
   if iniRow_sub= 0 then
       iniRow_sub= rowNum_sub
   end if

   if rowNum_sub= iniRow_sub then           
       count_ascii =96
   end if

  count_ascii =count_ascii +1
   Return Chr(count_ascii )
End function

表达式如下: -

=Code.ParentRowNum(RowNumber(Nothing))
=Code.ChildRowNum(RowNumber(Nothing))

希望这段代码有帮助..