2010-08-20 123 views
1

有谁知道如何/如果您可以在水晶报表的选择公式中使用MIN()?水晶报表选择公式

林想做到这一点:

Dim sql As String = "" 
    Dim startDate As Date = CDate(_startDate.ToString(_dateFormat)) 
    Dim endDate As Date = CDate(_endDate.ToString(_dateFormat)) 

    sql = "min({" & tableName & "." & dateFieldName & "}) <= " & startDate & " AND {" & tableName & "." & dateFieldName & "} <= " & endDate & "" 

    Return sql 

回答

0

您可以使用最小值()函数?它在Crystal的帮助文件中被引用。

0

您是否试图在选择公式中聚合数据,然后根据该聚合过滤数据?我怀疑这会起作用(可能是错误的,没有尝试过)。我建议:
1.馈送晶体预过滤数据

2.包括您的选择公式作为第二个数据集,并将两个表连接在一起,一旦它们都在Crystal中。

0

是的,您可以在GROUP选择公式中使用Crystal的聚合函数(最小值,最大值等)。但是,对于一个非常大的数据集来说,这可能是一个糟糕的主意。原因是(也适用于记录选择),在选择公式中使用Crystal函数很可能不会继续执行Crystal生成并发送到数据库的实际SQL查询。这意味着选择不会发生在数据库服务器上,并且ENTIRE数据集必须返回到Crystal,然后本地计算机必须通过它来筛选出不符合选择条件的行/组。

而是使用SQL表达式。您可以使用表达式从记录的子集中返回最小日期,然后在选择公式中使用它。这些将包含在Crystal发送到数据库的SQL查询中。