生成数字以在 s-s-rs 报告中显示序列时出现问题

Posted

技术标签:

【中文标题】生成数字以在 s-s-rs 报告中显示序列时出现问题【英文标题】:Issue while generating number to show sequence in s-s-rs report 【发布时间】:2018-05-01 14:33:00 【问题描述】:

我正面临 s-s-rS 报告的问题,我试图生成数字以显示字段序列。我正在使用报告中的代码生成这些数据。但它有两个主要问题。

    在这里,我可以在父报表中获取数字,但在子报表中,此编号不是从 1 开始,而是在子报表中继续,并且不考虑父报表值。 我的代码如下所示。这将生成像 这样的数字

1 个虚拟数据 1.1 虚拟数据 1.2 虚拟数据 2个虚拟数据 2.1 虚拟数据

Dim currentValue As Double
Public Function GetCounter(ByVal iCounter As Double, ByVal incrementCounter 
  As Boolean) As Double
    If (incrementCounter = true) Then
        iCounter = (iCounter + currentValue)
        currentValue = (currentValue + 0.1)
    End If

    Return iCounter
End Function

但是通过我的子报告,我想生成像

这样的数字

1 个虚拟数据 1.1 虚拟数据 1.1.1 虚拟数据 1.1.1.1 虚拟数据 1.1.1.2 虚拟数据 1.1.2 虚拟数据 1.1.2.1 虚拟数据 1.1.2.2 虚拟数据 1.2 等等。

我不知道如何通过 subReport 实现这一点。

第二个问题是。

    有些字段是我得到正确的数字,例如从父报告中得到的数字,在 PDF 中出现问题,一些额外的数字出现在报告中,而且报告和 PDF 中显示的数字对于某些字段来说是不同的。

我不知道为什么会出现这个问题以及我必须应用什么解决方案。

如果有人知道这些问题的解决方案,请帮助我..

【问题讨论】:

我认为看看你的表结构的设计会有所帮助。这可能是组嵌套的问题。 以上数据是单行的,在数据​​库中这些字段没有单独的表。在表格中,我们存储二级字段和标题的数据,即一级文本在报告中被硬编码。 我指的是您报告中的表格设计,而不是数据库。就报表设计而言,数据集来自哪里并不重要。 【参考方案1】:

您可以使用以下自定义代码

Dim numbers = New Integer() 0, 0, 0, 0 

Public Function Seq(lev as Integer) As String

Select Case lev
Case 0
numbers(0) = numbers(0)+1
numbers(1) = 0
numbers(2) = 0
numbers(3) = 0
Return Cstr(numbers(0))

Case 1
numbers(1) = numbers(1)+1
numbers(2) = 0
numbers(3) = 0
Return Cstr(numbers(0)) & "." & Cstr(numbers(1))

Case 2
numbers(2) = numbers(2)+1
numbers(3) = 0
Return Cstr(numbers(0)) & "." & Cstr(numbers(1)) & "." & Cstr(numbers(2))

Case 3
numbers(3) = numbers(3)+1
Return Cstr(numbers(0)) & "." & Cstr(numbers(1)) & "." & Cstr(numbers(2)) &"." & Cstr(numbers(3))

End Select

End Function

group1 的表达式为 = Code.Seq(0),group2 的表达式为 =Code.Seq(1), ... 等等

【讨论】:

以上是关于生成数字以在 s-s-rs 报告中显示序列时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

将 s-s-rS 报告导出为 CSV 格式时出现问题

s-s-rS 2008 - 导出为 pdf 时出现多个报告页面差异

s-s-rS 2008:如何立即生成多个报告?

在报告服务器中运行报告时出现 s-s-rS 错误

在报告服务 s-s-rS 中的横轴图表上格式化数字

s-s-rS 2008 月份编号未按顺序显示