【问题标题】:Crystal Reports - selecting records that don't match criteriaCrystal Reports - 选择不符合条件的记录
【发布时间】:2014-07-23 22:53:41
【问题描述】:

我确信这应该很容易,但我真的在为记录选择公式而苦苦挣扎。

我继承了一个使用以下公式选择记录的报表:

{LU_LEA_DCSF.LEA_DCSF_Description} = {?LEA} and
{DT_YP_SEPTEMBER_GUARANTEE.Created} > DateTime (2014, 01, 01, 00, 00, 00) and
{DT_YP_TRACKER.Academic_Year} = "2014" and
{DT_YP_TRACKER.Tracker_Type_Code} = "2"

这会检查今年的担保记录,然后检查担保类型是否正确,并且运行良好。

但是;我的直属经理现在想要创建一个列表,列出所有没有有保证的人。问题是他们可能在去年输入了保证,这意味着您不能进行“空”检查(我认为)。

我希望这是有道理的, 艾伦

更新更多示例: 有一个 DT_YP 表,其中记录了与我们一起工作的每个年轻人,并且 DT_YP_SEPTEMBER_GUARANTEE 表中有一个 YP_Ref,因此每个 YP 完全有可能没有、一个、两个或多个指向 GUARANTEE 表的链接,我需要查找他们是否没有链接或没有当前链接(即 2014 年 1 月 1 日之后)

【问题讨论】:

  • 数据库中的哪个字段会告诉你人们是否有保证?
  • @Siva,这是 DT_YP_SEPTEMBER_GUARANTEE 表中是否有记录 - 但他们可能去年有一个记录,所以我猜是这样的:没有记录或 1 之前的记录1/14
  • 您可以添加 NOT 关键字来反转布尔条件,例如 AND NOT {TD_YP_SEPTEMBER_GUARANTEE.CREATED} > ... 这可以仅过滤没有该条件的记录(尽管如果该表中没有记录开始,您可能必须添加NULL 逻辑或摆弄LEFT JOINs)。
  • @AHiggins;我想这就是我卡住的地方。我在整个公式中尝试了一个简单的NOT,但没有奏效。另外,正如您所说,如果没有记录,我将不知道如何检查。 :o(
  • 这里一问,人家没有担保就没有记录,那怎么算数?

标签: sql crystal-reports


【解决方案1】:

您的标准似乎是:

选择所有没有匹配的记录 DT_YP_SEPTEMBER_GUARANTEE 表的创建日期为今年。

基于此,我将执行以下操作:

1) 将您的 JOIN 条件更改为 DT_YP_SEPTEMBER_GUARANTEE 以成为

LEFT JOIN DT_YP_SEPTEMBER_GUARANTEE
ON *whatever the current condition is*
AND {DT_YP_SEPTEMBER_GUARANTEE.Created} > DateTime (2014, 01, 01, 00, 00, 00)

2) 在 WHERE 子句中添加一条语句,效果如下(不记得这是否是 Crystal 语法):

{DT_YP_SEPTEMBER_GUARANTEE.YP_Ref} IS NULL

这将尝试根据键匹配和 9 月表的记录来自今年的事实在现有表和 9 月表之间建立链接,并确保不包括符合该条件的人在结果集中。

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多