【问题标题】:Crystal Reports & Raiser's Edge: Selecting Data from 2 Joined TablesCrystal Reports & Raiser's Edge:从 2 个连接表中选择数据
【发布时间】:2013-04-18 02:59:37
【问题描述】:

我有一个奇怪的问题。我将数据存储在 2 个表中。

表 1:包含有关个人的数据

  • 个人ID
  • 生日
  • 电子邮件

表 2:包含拆分为 3 个字段的个人名称,每个字段都有一个键。

  • 个人ID
  • 名称类型
  • 姓名

这意味着如果 NameType = 1,我将获得 Surname,对于 NameType = 2,我将获得 Middle Name,对于 NameType = 3,我将获得 FirstName。

我需要创建一个水晶报表,在一行中列出此人的姓名,例如

姓+名+中间名

我遇到的问题与如何提取这些数据和连接有关。

如果我只是在这两个表之间创建连接作为左外连接,那么我无法选择要选择的 NameType。这意味着有时我会得到姓氏,有时会得到中间名等。似乎连接不一致。此外,我无法迭代预期的 3 个值,所以似乎我每次只能拉同一个。

我试图通过添加一个命令来解决此问题,该命令将依次从第二个表中选择每个名称。但是,此报告旨在集成到不支持命令对象的称为 Raiser's Edge 的东西中。换句话说,命令对象对我来说不是一个选项。

那么我在这里有什么选择?我不喜欢使用我知道会工作但有性能开销的子报表。有没有其他方法可以做到这一点?

谢谢

【问题讨论】:

    标签: join crystal-reports command-objects


    【解决方案1】:

    最简单的方法是对IndividualID 进行分组,然后通过变量跟踪名字、中间名和姓氏。真的,无需担心记录选择或加入。试试这样的:

    //Formula for group header
    whileprintingrecords;
    stringvar first := "";
    stringvar middle := "";
    stringvar last := "";
    
    //Formula for details section
    whileprintingrecords;
    stringvar first;
    stringvar middle;
    stringvar last;
    select {table2.NameType}
    case 1 : first := {table2.Name}
    case 2 : middle := {table2.Name}
    case 3 : last := {table2.Name}
    
    //Formula for group footer (the section to be displayed)
    whileprintingrecords;
    stringvar first;
    stringvar middle;
    stringvar last;
    
    last + ", " + first + " " + middle
    

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 2011-10-22
      • 2020-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多