【问题标题】:Crystal Reports Selection Formula水晶报表选择公式
【发布时间】:2010-08-20 15:38:44
【问题描述】:
有谁知道如何/是否可以在 Crystal Report 的选择公式中使用 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
【问题讨论】:
标签:
sql
winforms
crystal-reports
【解决方案1】:
你可以使用 minimum() 函数吗? Crystal 的帮助文件中引用了它。
【解决方案2】:
您是否尝试在选择公式中聚合数据,然后根据该聚合过滤数据?我怀疑这会起作用(可能是错误的,没有尝试过)。我建议:
1. 喂水晶预过滤数据
或
2. 将您的选择公式作为第二个数据集包含在内,并在两张表都在 Crystal 中时将它们链接在一起。
【解决方案3】:
是的,您可以在 GROUP 选择公式中使用 Crystal 的聚合函数(最小值、最大值等)。但是,对于一个非常大的数据集,这可能是一个坏主意。原因是(这也适用于记录选择)在选择公式中使用 Crystal 函数很可能不会延续到 Crystal 生成并发送到数据库的实际 SQL 查询。这意味着选择不会在数据库服务器上进行,整个数据集必须被发送回 Crystal,然后本地机器必须通过它来过滤掉不符合选择标准的行/组.
改为使用 SQL 表达式。您可以使用表达式从记录子集中返回最小日期,并在选择公式中使用它。这些将包含在 Crystal 发送到数据库的 SQL 查询中。