【问题标题】:Edit Parameter Field Crystal reports with NOT value?使用 NOT 值编辑参数字段 Crystal 报表?
【发布时间】:2013-03-14 21:18:50
【问题描述】:

在 Crystal Reports 中,我想添加一个 WHERE field <> date 以在我的报表中从我的数据库中过滤掉具有 NULL 值的日期。

我在后端使用的是旧版 FoxPro 数据库,它从我的报告中生成一条 SQL 语句,但似乎没有在生成的语句中添加 WHERE 子句。

当直接访问 FoxPro 后端时,具有 psudo-NULL 值的日期的日期为 1899-12-30,但是当它们通过 Crystal 从 FoxPro 中拉出时,它们显示为 12/30/99(这可能与刚刚显示在 @ 中的日期相同) 987654326@ 格式)。

我注意到报告有一个现有的参数字段,提示用户将原始查询过滤到特定日期范围。我尝试在参数字段之外添加自己的,但发现我需要的 WHERE field <> date 不是可用选项,因为主要只有 3 种类型的字段参数:

离散

  • 接受单个和离散值。

远程

  • 接受一个下限值和一个上限值以选择此范围内的所有内容。

离散和远程

  • 以上两者的结合

这些似乎都不能使用WHERE NOT 类型的子句过滤查询结果,是否有其他方法可以做到这一点?

【问题讨论】:

  • 数据会显示在表格中吗?如果是这样,我相信您可以对显示的行进行过滤以匹配此内容。
  • 是的,它会在详细信息中显示在表格中,是这个意思吗?
  • 如果您只想排除 NULL 日期,您需要使用选择专家而不是参数。一个参数用于为最终用户提供可供选择的选项,而选择专家是对源数据的过滤器。它有很多选项,包括编写自定义公式来过滤数据。
  • @EvilBob22 所说的。您需要在报告的选择公式中添加 {table.field} <> date(1899,12,30) 之类的内容。
  • 是的。如果我对 Crystal 的记忆对我有用,您应该能够通过右键单击表格或分组并在实际细节上添加可见性设置或过滤器来打开表格的属性。抱歉,缺乏细节,我面前没有水晶副本,无法为您提供更多详细信息。不过,EvilBob 说的也应该管用。

标签: sql crystal-reports crystal-reports-10


【解决方案1】:

将此添加到您的记录选择公式中:

// remove actual nulls
AND Not(Isnull({table.date_field})) 
// remove old dates 
AND {table.field} <> date(1899,12,30) 
// remove dates not in select parameter value
AND {table.field} IN {@date_parameter}

【讨论】:

  • 记录选择公式在哪里?在侧边栏?根据公式?如何判断哪一个是记录选择公式?
  • Field Explorer-&gt;Fields-&gt;Database Fields-&gt;p_active 中的一个字段旁边实际上有一个小绿色复选标记,当我查看 Crystal Reports 生成的 SQL 语句时,它有一个 NOT 条件。我如何访问它?
【解决方案2】:

我真正需要做的只是在 SQL 语句的 WHERE 子句中添加一些条件,这在 SQL 客户端中非常简单,但是当您在 Crystal Reports v10 中执行此操作时,它有点难以找到,除非你知道你在寻找什么......

所以我需要做的是:

  1. 在报告中选择要作为过滤依据的字段(在Details 部分中)
  2. 单击Experts 工具栏上的Select Expert 按钮。
  3. Select Expert 对话框中,您的字段名称应显示在选项卡中。
  4. 您可以在下面选择用于过滤记录的WHERE 条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多