是否可以根据各种条件详细抑制组头?

时间:2016-02-29 21:38:57

标签: crystal-reports

我有一个组1和组2的报告。出于格式化目的,组2标题和详细信息被禁止,所有信息都显示在组2页脚中。如果满足某个条件,我已设置报告以抑制组2页脚,这意味着有时组1标题下的整个部分是空白的,我想要禁止它。

以下是如何设置

第1组 - 员工 第2组 - 客户(被压制) 细节(压制) 客户名称field1字段2字段3字段4

对于字段1-4,可以返回"草稿","最终"和null。我只是在寻找"草案"和空值。

所以我如何设置组2页脚只是返回客户名称和一个总结所有四个字段值的公式{@draft}

if {#divDraft} + {#convoDraft} + {#yearDraft} + {#rovDraft} >= 1 then "Draft" else if {#divFinal} + {#convoFinal} + {#yearFinal} + {#rovFinal} >= 1 then "Final" else " "

然后我根据{@draft}返回"最终"

来压制页脚

如果该组中的每个客户端都将所有四个字段返回为null或至少一个作为草稿返回,则可以取消组1标头吗?

我尝试运行子报表,然后将该共享变量放在第1组标题中但不能正常工作

WhilePrintingRecords; Shared NumberVar totalSuppress; Global NumberVar suppression; suppression := Shared NumberVar totalSuppress;

共享报告中的{@totalSuppress}公式添加了至少一个"草稿"以四个字段为空的次数返回。我将其放在子报表的页脚中,然后在主报表组标题中放置{@suppression}。

我得到的是一个模式,其中第一组标题返回0.00,其中有4个结果,组页脚为4.00。然后下一组在组头中有4.00,其中有1个结果,组页脚有1.00。下一个在组头中有1.00,依此类推。

我尝试使用每个组头重建变量的公式。所以我写了

Global NumberVar suppression; suppression := 0

但所有这一切都是在群组标题中返回0.00。

欢迎任何其他想法。

RE:尝试新公式

if {sales_div.draft_pend_approv_Value} = "Draft" or {sales_div.draft_pend_approv_Value}  = "Pending Approval"
or {convoSales_200.pending_approval_Value} = "Draft" or  {rov_client.pend_draft_Value} = "Draft"
or {yearly_sales.draft_pend_Value} = "Draft") then 1
else if isnull({sales_div.draft_pend_approv_Value}) and
isnull({convoSales_200.pending_approval_Value}) and   isnull({rov_client.pend_draft_Value})
and isnull({yearly_sales.draft_pend_Value}) 
then 1
else 0

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您尝试使用“运行总计字段”的结果来抑制标题 - 这不会起作用,因为运行总计只在页脚中计算。

您可以尝试不同的方法。创建一个将进入“详细信息”部分的公式字段。它应该只检查该行是否是您想要显示的类型,如:

    let newWindow = NSWindow(contentRect: NSMakeRect(0, 0, NSScreen.mainScreen()!.frame.width, NSScreen.mainScreen()!.frame.height), styleMask: NSBorderlessWindowMask, backing: NSBackingStoreType.Buffered, `defer`: false)

 func applicationDidFinishLaunching(aNotification: NSNotification) {

    newWindow.title = "New Window"
    newWindow.opaque = false
    newWindow.backgroundColor = NSColor(calibratedHue: 0, saturation: 1.0, brightness: 0, alpha: 0.5)
    newWindow.makeKeyAndOrderFront(nil)
    newWindow.level = Int(CGWindowLevelForKey(CGWindowLevelKey.ScreenSaverWindowLevelKey))

 }

然后在Group Header#1中,在Section Expert中,在Suppress公式中放入

if (isnull({field1}) or isnull({field2}) or ... or {field1} = 'Draft' or {field2} = 'Draft' ...)
then 1 else 0

其中{@check}是公式字段,{Employee}是创建组1的字段