当CR显示为0时,CR显示默认值6

时间:2013-05-27 17:25:50

标签: crystal-reports

在我的CR中。我有很多子报告。对于我的所有子报表,我在ReportHeaderSection2(报表头b)中创建并插入了组名。在同一个Report Header Section中,我使用Count进行了总结。然后再在ReportFooterSection1(报告页脚a)中显示总计。与其他表相关,我创建了6条显示各种数据的记录。

例如,我选择了一个名为Employeees.MainDetails.EOAsianOrAsianBritish的表,并在ReportHeaderSection2(Report Header b)中插入了组名。

现在,如果没有选择任何内容(例如前端应用程序中的combox,内置C#),CR数据显示的内容就像这样(作为示例种族数据)......

Asian or Asian British < this is just a header title
                 6
Total            6

我希望CR显示为......

Asian or Asian British 
                 0
Total            0

在Reports Options中,我检查了将Database Database NULL值转换为Default并将其他NULL值转换为Default。这没用。我也试过以下......

我右键单击,对于ReportHeaderSection2(Report Header b)和ReportFooterSection1(Report Footer a)中的Employeees.MainDetails.EOAsianOrAsianBritish,Format Object&gt;格式编辑器菜单出现&gt;选择数字标签&gt;点击Customize&gt; Checked抑制如果零和显示零值为0.这也不起作用?

EDITED FYI

我在Visual Studio 2010中使用CR.Crystal Report Viewer。

如果有人能帮助我,我将不胜感激。

非常感谢

更新1

我右键点击了汇总的Count(CountofEOAsianOrAsianBritish),然后选择了Select Expert&gt;记录&gt;选择等于并输入以下形式......

{Employeees.MainDetails.EOAsianOrAsianBritish} =“0”。这已经激活了6但是如果我尝试在前端输入一些文本值,没有值显示CR?所以我正在研究它。

更新2

在我的Comboox中,我有我输入的集合列表。我故意在开头列出一个空白然后列出了收藏品。 CR可能会选择这个。我想要一个公式,所以CR不计算空白,除非我在汇总的Count中做错了,CountofEOAsianOrAsianBritish

更新3

我尝试了Nick解决方案,但我得到了),是否缺少Visual Studio 2010中的DLL。

更新4

如果我这样做...(不是Isnull({Employeees.MainDetails.EOAsianOrAsianBritish}))那么CR显示输出如下

Asian or Asian British
                    2
Bangladeshi         1
Indian              1
Pakistani           2
Total:              6

这是不正确的,正确的输出应显示....

Asian or Asian British
Bangladeshi         1
Indian              1
Pakistani           2
Total:              4

所以这告诉我的是CR正在计算comboox中的空白字段。所以我想知道在CR中是否可以做任何事情?还需要修剪,因此当有空白时,行不显示空行。

更新5

我试过......

if isnull({Employeees.MainDetails.EOAsianOrAsianBritish}) then
0 else ({Employeees.MainDetails.EOAsianOrAsianBritish})

这给了我以下错误

  

“这里需要一个数字”

突出显示Employeees.MainDetails.EOAsianOrAsianBritish   否则声明?在else语句中,不应该公式计算种族然后在页脚中显示总数?

尼克

我得到的输出是

Asian or Asian British
                    2     
Total:              2

什么时候显示......

Asian or Asian British
Indian              1
Pakistani           3
Total:              4

2 个答案:

答案 0 :(得分:2)

在你的公式中试试这个:

If(Isnull({Employeees.MainDetails.EOAsianOrAsianBritish})  or ({Employeees.MainDetails.EOAsianOrAsianBritish}) = "") then (
     false
)else(
   true
);

答案 1 :(得分:1)

解决方案描述

这是一个创建包含子报表和子报表分组的报表的解决方案,其中聚合值随后会传递到主报表。

解决方案假设

  • 此解决方案假定您至少使用Crystal Reports 2008,如果不是更新的话。
  • 此解决方案假定您知道如何在主报告和子报告中正确连接数据源。
  • 此解决方案假定您拥有有效数据,并且您的目的是将数据分组到子报告中的两个不同级别,而不包含详细信息,并将结果传递给主报告。

解决方案指令订单

  1. 创建子报告
  2. 创建指定的组
  3. 创建类型组
  4. 取消详情
  5. 添加汇总/汇总字段
  6. 禁止不需要的组页眉/页脚
  7. 创建要传递给主报告的变量
  8. 解决方案

    先决条件:让Crystal Reports设计器对您的报表开放,并连接,登录和验证数据源。

    创建子报告

    1. 使用子报告插入工具,命名子报告并单击报告向导
    2. 添加数据源,然后单击“完成”
    3. 将子报告放在主报告的适当位置并设置其宽度
    4. (可选)右键单击并选择“设置子报表格式”,然后转到“边框”选项卡以删除边框
    5. 双击子报告以打开设计器
    6. 删除Crystal添加的所有字段
    7. 删除报告页眉和页脚
    8. 上的其他部分

      您现在有一个空白的子报告准备就绪,接下来我们将开始分组。

      创建指定组

      我们正在子报告中创建一个指定的组来限制数据量,以便我们没有空行。

      1. 转到群组专家
      2. 选择将过滤数据并将其添加为群组的字段(例如Employeees.MainDetails.EOAsianOrAsianBritish)
      3. 点击选项按钮
      4. 选择&#34;指定的组顺序&#34;从下拉组进行分组
      5. 单击“指定的组”选项卡
      6. 点击&#34;新&#34;并输入该组的标题(例如&#34;亚洲或亚洲英国&#34;)
      7. 选择一个比较运算符(例如&#34;等于&#34;)并为其指定要过滤的值(例如,1)点击&#34;确定&#34; 注意:您可以添加其他指定的组,或者通过单击组名称屏幕中的新选项卡添加更多指定组,以添加&#34;或&#34;部分。
      8. 返回群组界面,转到&#34;其他&#34;标签
      9. 选择&#34;放弃所有其他&#34; 注意:这仅丢弃此子报告的记录而不是主报告。
      10. 点击&#34;确定&#34;
      11. 现在应创建指定的组,该组将仅过滤子报表中所需的值,并且应将标题添加到组标题中。

        创建类型组

        1. 返回群组专家
        2. 根据您想要计算的其他字段(例如种族)添加另一个组
        3. (可选)转到&#34;选项&#34;然后点击&#34;选项&#34;如果您的数据源未提供字段值,则会根据字段值为您的组提供不同的名称 注意:如果需要的话,我可以告诉你如何做到这一点,但是现在,我正在假设像&#34;印度&#34;已经存在作为分组选项。
        4. 点击&#34;确定&#34;你现在应该有第二组,其组标题为
        5. (可选)取消粗体显示第二个组标题并稍微向右移动以在上述标题组下方缩进
        6. 取消该组的页脚,因为它不再需要
        7. 您现在应该有两个组,一个包含您的主组标题,另一个包含您的摘要组标题。现在,我们需要压制细节。

          抑制细节

          这是重要的,否则您将获得一堆不需要的数据。右键单击Detail部分行标题,然后选择&#34; Suppress。&#34;另外,抑制报表页眉和页脚,因为我们不需要它们。

          添加摘要/聚合字段

          现在,我们将创建我们的汇总字段,例如,我们的计数。

          1. 点击&#34;添加摘要&#34;按钮
          2. 选择您要汇总的字段(例如,员工编号或区分每个明细行的内容)
          3. 选择摘要类型(例如计数)
          4. 选择要添加摘要的组或(按照我的建议)选中&#34;添加到所有组级别&#34;
          5. 点击&#34;确定&#34;和摘要字段应添加到每个组级别的页脚 注意:这可能会解除对某些行的抑制,但您可以重新执行此操作。
          6. 将第二个分组摘要从页脚移到标题并放置在您希望显示的位置
          7. 在主要组的页脚中添加一个文本字段,其中显示&#34; Total&#34;适当地放置
          8. (可选)在页脚中移动顶部分组摘要以与辅助组标题中的摘要对齐
          9. 删除报告页脚中的摘要
          10. 重新抑制报告页脚和辅助组页脚
          11. 从技术上讲,您的子报告已完成。如果只预览子报告本身,它应该显示正确的聚合数据。

            创建要传递给主报告的变量

            这是可选的,但很多时候,您希望将此值传递给主报告。

            1. 创建一个新的公式字段,根据需要为其命名,但其含义的相关名称是有用的
            2. 公式应为Shared NumberVar TotalCount := Sum({EmployeeNum}, {EOAsianOrAsianBritish}) 注意:这样做是创建一个共享的NumberVar,然后您可以在主报表中使用它。为了使自己更容易,而不是在:=之后输入所有内容,您只需在报告字段中滚动摘要字段(例如,在主要组上计数),然后双击它以将其添加到公式中。
            3. 点击保存
            4. 将字段添加到已抑制的报告页脚
            5. 现在,您可以将总数传递给主报告。需要注意的一些事项是:整个子报告可以在其自身内被抑制,但仍然可以将数字传递给主要报告。但是,如果它在主报告中被抑制,则该数字不会通过。最后,主报告中公式字段的公式为Shared NumberVar TotalCount,它将为您提供可以使用的数字。

              结论

              是的,我知道有一些记录选择技术也可用于完成子报告中的数据限制。但是,如果需要,此方法允许您为子报告提供一个或多个组,而不仅仅是报告页眉和页脚。

              如果您有任何疑问,请随时提出。我知道这有很多信息要扔给你。