Crystal reports 水晶席-如何找到2个客户的价格相同项目的差异

Crystal reports 水晶席-如何找到2个客户的价格相同项目的差异,crystal-reports,crystal-reports-xi,Crystal Reports,Crystal Reports Xi,我有一个表,列出了客户编号、项目编号和项目价格(基于客户编号)。我想在Crystal中显示每个客户/项目编号的项目价格与特定客户(“Jeremy”)的项目价格之间的差异。例如: Customer name = Jeremy price for item 1 = $20 price for item 2 = $30 price for item 3 = $40 Customer name = Mike price for item 1 = $10 price for item 2 = $25 p

我有一个表,列出了客户编号、项目编号和项目价格(基于客户编号)。我想在Crystal中显示每个客户/项目编号的项目价格与特定客户(“Jeremy”)的项目价格之间的差异。例如:

Customer name = Jeremy
price for item 1 = $20
price for item 2 = $30
price for item 3 = $40

Customer name = Mike
price for item 1 = $10
price for item 2 = $25
price for item 3 = $30
对于所有客户和所有项目,请显示: 当前客户名称、当前商品名称以及Jeremy商品价格和当前客户商品价格之间的差异。 i、 e.
迈克,第1项,10美元(差额) 迈克,第2项,5美元(差额) 迈克,第3项,10美元(差额)

我很想知道如何显示当前客户的商品价格与每个商品的Jeremy商品价格之间的价格差异(然后对每个客户重复与Jeremy相同的步骤)


任何帮助都将不胜感激。

有多种方法可以做到这一点。。。但我建议最好的方法是使用子报表

我的做法:

  • 在主报告中获取2个子报告,创建2个详细部分,并将每个详细部分放在一个详细部分中

  • 在第一个子报告中,编写以下公式,并使用子报告链接传递到主报告

  • @项目1

    Shared numbervar item1;
    if(Customer name = "Jeremy")
    then item1:=Item1 database value
    
    @项目2

    Shared numbervar item2;
    if(Customer name = "Jeremy")
    then item2:=Item2 database value
    
    @项目3

    Shared numbervar item3;
    if(Customer name = "Jeremy")
    then item3:=Item3 database value
    
    现在将该值传递给主报告并存储在变量中

    @主要项目1

    Shared numbervar item1;
    Shared numbervar item4;
    item4:=item1;
    
    @主要项目2

    Shared numbervar item5;
    Shared numbervar item2;
    item5:=item5;
    
    @主要项目3

    Shared numbervar item6;
    Shared numbervar item3;
    item6:=item3;
    
    现在创建第二个子报告,并使用子报告链接将
    item4
    item5
    item6
    的值传递给子报告2

    子报告2中按客户分组:

    @显示项目1

    Shared numbervar item4;
    
    if (customer name <> "jeremy")
    then
    item4-item1
    
    sharednumbervaritem4;
    if(客户名称“jeremy”)
    然后
    项目4-1
    
    @显示项目2

    Shared numbervar item5;
    
    if (customer name <> "jeremy")
    then
    item5-item5
    
    sharednumbervaritem5;
    if(客户名称“jeremy”)
    然后
    项目5-5
    
    @显示项目3

    Shared numbervar item6;
    
    if (customer name <> "jeremy")
    then
    item6-item3
    
    sharednumbervaritem6;
    if(客户名称“jeremy”)
    然后
    项目6-3
    
    现在取消取消子报告1,而不取消子报告2

    现在,在您的显示子报表2中,所有值都是customer
    Jeremy
    的差值。。如果要显示jeremy值,请在另一个公式中将上述条件更改为
    =jeremy


    如果您面临任何问题,请告诉我。

    在阅读进一步评论之前,我的建议。尝试从存储过程中获取此值,或者在获取数据时,添加一列比较值。这是更快的解决方案,在crystal report方面无需担心

    我在db端处理过此类问题,而不是crystal report端。

    还是要在水晶报表中,然后才能通过公式实现在变量中

    您必须将值存储在每个变量的详细信息部分,并在生成结果时进行比较


    您可以通过交叉表报告进行操作,最后您只需提供add formulated variable即可得出结果,但这是一项乏味的工作。

    数据库的想法听起来不错,但我没有在数据库级别插入表/存储过程所需的访问权限。我喜欢子报表的想法,一直在忙于创建一个共享变量的子报表,但是在实际的数据库中有将近1000个条目,所以我不想为每个条目创建变量。理想情况下,我希望将商品编号传递给两个公式,一个用于计算jeremy价格,另一个用于创建Mike价格。然后我可以创建第三个公式,返回两个价格之间的差异。是的,亲爱的,你的方向是正确的。但有一点需要注意,共享变量必须知道如何使用共享变量。它在整个报告中是静态的。因此,在项目组中更改项目时更改值。在项目组标题-部分中的公式上单击鼠标右键。这是一项乏味的工作。但我认为你应该这样做。祝你一切顺利