如何在Crystal Reports 2008中显示同一详细信息部分中的当前和以前的记录?

时间:2009-12-24 14:53:49

标签: crystal-reports

我想知道水晶报告中是否有办法做以下事情:

我有一个包含这样数据的表:

    ID       MeshName      RetainedWeight
    654      3.3 inches    20.00
    789      3.0 inches    20.00
    321      1.4 inches    20.00
    ...

我需要在这样的水晶报告中展示它们:

    Title Here                                       %
    Retained 3 inches                               33.3
    Retained 2.3 inches, passing 3 inches           33.3
    Retained 1.4 inches, passing 2.3 inches         33.3
    Retained ... inches, passing 1.4 inches         ... 

所以,你可以看到我需要显示当前记录以及前一个记录的MeshName,还有什么想法?

我在想:可能有一些变量保留了以前的MeshName ......?

2 个答案:

答案 0 :(得分:3)

您可以使用上一个下一个功能参考上一个或下一个详细信息行中的值。

因此,在您的示例中,它可能是一个名为@Title的公式,其中包含文本:

"Retained " & ToText({MyTable.Inches}) & " inches, passing " & ToText(Previous({MyTable.Inches})) & " inches"

您还可以使用 PreviousIsNull NextIsNull 函数来确保您没有上一行或第一行的问题。

答案 1 :(得分:1)

如果ID值始终是连续的(即“之前的记录”,则表示当前记录的ID为1的记录),您可以在SQL端而不是在水晶报告中进行。我假设你说“桌子”你正在使用数据库。这是一个完整的例子(我在这个例子中使用了Oracle):

CREATE TABLE DATA (ID NUMBER, MeshName VARCHAR2(50), RetainedWeight NUMBER(25,2))

INSERT INTO DATA VALUES (1,'3 inches',20.00);
INSERT INTO DATA VALUES (2,'2.3 inches',20.00);
INSERT INTO DATA VALUES (3,'1.4 inches',20.00);

SELECT 'Retained ' || a.meshname || 
       CASE
         WHEN b.id IS NOT NULL THEN
           ', passing ' || b.meshname
         ELSE
           ' '
       END
  FROM DATA a
 LEFT OUTER JOIN DATA b
   ON b.id = a.id-1
 ORDER BY a.id

SELECT查询的结果是:

Retained 3 inches 
Retained 2.3 inches, passing 3 inches
Retained 1.4 inches, passing 2.3 inches

2。 如果您想尝试直接在水晶中进行,那么您可以查看Previous功能。这是一个可能有用的链接: http://www.tek-tips.com/viewthread.cfm?qid=1460030&page=9