我有一张表格,列出了客户编号,商品编号和商品价格(根据客户编号)。我想在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的商品价格与当前客户的商品价格之间的差异。
即
迈克,第1项,10美元(差价)
迈克,第2项,5美元(差价)
迈克,第3项,10美元(差异)
我对如何显示当前顾客的商品价格与每件商品的Jeremy商品价格之间的价格差异感到困惑(然后与Jeremy相比,为每位顾客重复相同的步骤)。
任何帮助都将不胜感激。
答案 0 :(得分:0)
有多种方法可以做到这一点......但我建议的最好方法是使用子报告。
我的方法:
在主报告中获取2个子报告,并创建2个详细信息部分,并将每个部分放在一个详细信息部分中。
在第一个子报告中写下以下公式,并使用子报告链接传递到主报告。
@ Item1的
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
现在将值传递给主报告并存储在变量中。
@ Main_Item1
Shared numbervar item1;
Shared numbervar item4;
item4:=item1;
@ Main_Item2
Shared numbervar item5;
Shared numbervar item2;
item5:=item5;
@ Main_Item3
Shared numbervar item6;
Shared numbervar item3;
item6:=item3;
现在创建第二个子报告,并使用子报告链接将item4
,item5
和item6
的值传递到子报告2。
在子报告2中按客户分组:
@ display_item1
Shared numbervar item4;
if (customer name <> "jeremy")
then
item4-item1
@ display_item2
Shared numbervar item5;
if (customer name <> "jeremy")
then
item5-item5
@ display_item3
Shared numbervar item6;
if (customer name <> "jeremy")
then
item6-item3
现在压制子报告1并且不要压缩子报告2.
现在,您的显示子报告2中的所有值都是客户Jeremy
的差异..如果您希望显示jeremy值,请将上述条件更改为另一个公式中的=Jeremy
。< / p>
如果您遇到任何问题,请告诉我。
答案 1 :(得分:0)
在阅读进一步评论之前我的建议。尝试从存储过程中获取此值,或者说当您获取数据时,添加一列比较值。哪个是更快的解决方案,在水晶报告方面无需担心。
我在db方面做过这类问题,而不是水晶报告方。
你还想在水晶报告中,那么你可以通过变量中的公式来实现。
您必须将值存储在每个变量的详细信息部分中,并在结果时进行比较。
或
您可以通过交叉表报告进行操作,最后您只需添加公式化变量即可得出结果,但这是一项繁琐的工作。