如何在运行时更改“Sum”条件?

时间:2009-12-28 21:26:04

标签: visual-studio-2008 crystal-reports

我的报告按两个字段分组,第二个是日期字段。

如果我转到“群组专家”,请选择第二个字段(日期字段),然后单击选项,我会看到“更改群组选项”对话框。共有选项卡上有两个选项卡(Common和Options),我们现在看到三个组合框。

Combobox1:日期字段

Combobox2:按升序排列。

第三个comobox,因为这是一个日期字段而存在,它上面有这个标签: “该部分将被打印:”

它的价值是:

Combobox3:每一天。

行。在我的公式编辑器中,我需要对一个字段求​​和(在我们的字段中按字段),所以我的公式如下:

Sum({Table.Field}, {Table.OurDateFieldWeAreGroupingOn}, "daily")

每日都在那里因为Group Expert是“每天都有”。如果我将ComboBox3更改为“for each month”,则Sum函数中的字符串必须更改为“monthly”。 Sum函数就在那里,每当水晶报告中断我的分组时,我就会有一个总计。

我遇到的问题是字符串条件。这是因为我希望能够在运行时更改分组。

例如,

switch (grouping)
{
    case Minute:
        m_Rpt.DataDefinition.Groups[1].GroupOptions.Condition = 9;
        break;
    case Hour:
        m_Rpt.DataDefinition.Groups[1].GroupOptions.Condition = 10;
        break;
    case Day:
        m_Rpt.DataDefinition.Groups[1].GroupOptions.Condition = 0;
        break;
    case Week:
        m_Rpt.DataDefinition.Groups[1].GroupOptions.Condition = 1;
        break;
    // etc, etc, etc
}

所以,他们允许我在运行时更改分组,没问题。在设计时我有“每日”,但我可以“每月”(例如)。顺便问一下,有没有人知道我是否可以用一些Crystal Reports定义(来自枚举或其他东西)取代9,10,0,1等等?我只知道“每周是1”(例如),因为那是“combobox3”中的第2项。

因为我可以在运行时更改它吗?我怎么能修改我的公式的条件?

如果我在运行时将其更改为每周一次,我需要我的Sum看起来像这样:

Sum({Table.Field}, {Table.OurDateFieldWeAreGroupingOn}, "weekly")

问题是在字段编辑器中,如果我使用字符串以外的任何东西,我会收到此错误:“组条件必须是字符串”。我曾尝试将该字符串作为值传递(例如):

Sum({Table.Field}, {Table.OurDateFieldWeAreGroupingOn}, {@ValuePassedIn})

我的意思是,如果他们允许你在运行时改变分组,我也必须能够改变公式的条件,对吗?

1 个答案:

答案 0 :(得分:-1)

我基本上是在学习Crystal Reports,所以现在有些事情可能会让我失望......那就是说:

Sum字段最初使用是因为每次页面在我的分组中断时我都需要保持“运行总计”。好吧,我继续创建了一个“Running Total”字段(不需要我每天或每周或每月指定)。然后,在我的公式中,我使用了这个新的Running Total字段而不是Sum函数(它们都做了同样的事情)。

问题解决了。