从另一个表中编码的值生成列

时间:2013-02-01 08:00:52

标签: crystal-reports

我正在尝试创建(我认为的)一个简单的Crystal Report。基本上,我想制作一份报告,列出每次学生收到某种纪律处分时的情况:

╔═══════════╦═════════════╦════════════╦══════════╗
║ StudentID ║ StudentName ║   Action   ║   Date   ║
╠═══════════╬═════════════╬════════════╬══════════╣
║ 1         ║ Smith, John ║ Suspension ║ 1/1/2012 ║
║ 2         ║ Q, Susie    ║ Detention  ║ 1/5/2012 ║
║ ...       ║ ...         ║ ...        ║          ║
╚═══════════╩═════════════╩════════════╩══════════╝

但是,此信息作为三个单独的表存储在数据库中:

  1. 学生信息,例如他们的ID和姓名。
  2. 纪律处分,包括学生的身份证明,日期和表明采取何种行动的代码。
  3. 将每个代码与操作描述配对的表,因此1映射到“Detention”,2映射到“Suspension”等。
  4. 我不确定如何在Crystal Reports中链接这些列,特别是这样我可以显示描述所采取操作的列而不仅仅是代码。我认为SQL Expression字段可以实现这一点,如下所示:

    (
    SELECT "ActionCodes"."ActionDesc"
    WHERE "DisciplinaryActions"."ActionCode" = "ActionCodes"."ActionCode"
    )
    

    不幸的是,将此字段添加到我的报告中只会产生空白行。我是在正确的轨道上,我只是摸索着我的查询,还是有更好的路线?

2 个答案:

答案 0 :(得分:0)

首先检查数据库中的查询,然后检查数据是否存在

学生ID,学生姓名,行动,

再次检查ReportPriview后,水晶报告的详细信息部分中的日期。

答案 1 :(得分:0)

在Crystal Reports中,您需要转到Database Expert,导航到要从中检索表的数据库。然后使用>按钮位于屏幕中间,将所有表格移到右侧:学生,纪律,描述。

然后您必须创建左外连接。

从Student表中,选择StudentID并将其拖到Disciplinary的StudentID。

您应该会看到一个显示从学生到纪律的箭头的联接--->

之后,左外连接纪律代码与描述代码。

一旦连接正确,您应该可以将所需的不同字段拖放到报告中。

您可以使用SQL Expression选项,但是更容易进行连接,并且您还可以灵活地在将来使用Disciplinary Code或Description。

如果您需要有截图的分步说明,请与我们联系。