【问题标题】:Conditional printing depending of empty or null value in Crystal Reports根据 Crystal Reports 中的空值或空值进行条件打印
【发布时间】:2012-05-21 00:39:50
【问题描述】:

假设我有一个 StoredProcedure,它返回一个唯一的行,该行对应于包含“Name”和“Surname”列的表。

我希望报告显示:

Name: NameField
Surname: SurnameField

其中“NameField”和“SurnameField”是StoredProcedure返回的字段。

特殊要求,如果“SurnameField”为空或null,那么我不想显示“Surname: SurnameField”。

我怎样才能做到这一点? 我唯一想到的是将存储过程分成两部分,一个用于姓名,一个用于姓氏,并将每一行划分为不同的子报表,然后为第二个选择“如果为空则删除”(或类似的东西)......但这是真的有点矫枉过正,我想有一个更简单的方法。

【问题讨论】:

    标签: database crystal-reports field crystal-reports-2008


    【解决方案1】:

    应该有很多方法可以实现这一点。我不太确定您的报告是如何布局的,但您可以使用简单的公式隐藏字段和标签或整个部分(如果它有自己的部分); isnull({table.field}) or {table.field} = ''

    或者,如果您将空值设置为默认值而不是异常值,您可以简单地执行以下操作:{table.field} = ''

    L

    【讨论】:

    • 我不知道这个公式是怎么用的,你有关于如何使用的参考吗?如果这是真的,它会设置元素的一些“可见”字段吗?
    • 你的水晶报表已经建好了吗? SurnameFieldSurname: 标签有自己的部分,还是与其他对象在一个部分中?在部分专家中,您可以为surpressing 整个部分设置条件公式,或者通过右键单击字段、格式、常见然后为单个对象设置条件抑制公式
    • 我将它们放在相同的部分,所以我猜它应该是第二种方式。感谢您的帮助!
    【解决方案2】:

    设置字段> 1(假设所有都大于1)或<> 0
    那应该过滤掉该区域中带有空白的记录。

    【讨论】:

      【解决方案3】:

      您可以通过 Section Expert 来实现:

      假设name字段name是Surname,表是NAME,存储surname值的字段是S_NAME_VALUE。您可以设置过滤器检查该值是否为 NULL 或 BLANK。

      if {NAME.SURNAME} in ['SNAME'] and 
                   {NAME.S_NAME_VALUE} =''
      then 
                   TRUE
      

      我假设有一些用于姓氏过滤的代码,即 SNAME。

      如果不是,您可以使用一个条件并将其标记为真。

        if {NAME.S_NAME_VALUE} = '' then TRUE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多