0

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

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

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

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

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

这意味着对于 NameType = 1,我会得到姓氏,对于 NameType = 2,我会得到中间名,对于 NameType = 3,我会得到名字。

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

姓氏 + 名字 + 中间名

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

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

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

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

谢谢

4

1 回答 1

0

最简单的方法是分组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-04-18T15:38:58.683 回答