我坚持认为,在交叉表报告中,我需要只有两个列的值的总和,并减去该值的总和我应该做什么?
如下所示,
Product 1 Product2 Product 3 Total
----------------------------------
Cust 1 4 5 2 11
Cust 2 5 9 7 19
我想将“产品1”,“产品3”的值相加。然后从行总数减去=>总 喜欢 [4 + 2] -11 =个总。 并希望为每位客户重复这一点..
任何人都可以帮帮我。
答案 0 :(得分:1)
我不确定何时引入了嵌入式摘要,但我很确定您的Crystal版本具有此功能。如果不是,我提前道歉。我现在只使用这种方法几个月了,起初它很混乱。至少对我而言它已经派上用场了...... 我对你的交叉表做了以下假设。根据需要更改名称
汇总字段{yourtable.cost}
在交叉表的左上角,右键单击转到高级计算并选择计算成员
CurrentColumnIndex=(GetNumColumns-2)//This will insert a column just before the total column
(
GridValueAt (CurrentRowIndex,0 , 0) // Product 1 value
+
GridValueAt (CurrentRowIndex,2 , 0) // Product 2 value
)
-
GetTotalValueFor "yourtable.product")
注意:Geez很难在这个网站上发布!
答案 1 :(得分:0)
首先要明确晶体报告10不提供以下功能 “CurrentRowIndex”,“GridValueAt” 这就是“CoSpringsGuy”的上述解决方案不适用的原因.......
因为我们有两张桌子。 1个客户和第2个产品,我们生成交叉表,其中包含product_sold(数量)和2个交叉表列“Product.name”和子列产品的汇总字段。型
现在我们想要将产品的产品和产品类型“正常”和“试点”的总和减去产品的产品。包装类型=“试点”。 p>
对于这个问题,我们必须在crystal运行时处理格式化公式并操作到汇总字段的“显示字符串” 然后我们将编辑总数,即最后一栏
第1次编辑在下面的代码
的帮助下总结了“显示字符串”Global CCust As String to keeping last customer for teli new customer name
Global Ccol As String ' tht is for keeping last column/product.packing type and teli with new col
Global Rndx as number ' this is for generating index of the row
Global totperx(22) as number ' is to hold the currnt value of cell and adding with previous value
' and i imagen that number of customers will less then 22 otherwise you can take unlimited array
Whileprintingrecords
if (CCust="") then
CCust=gridrowcolumnvalue("Table_Cust.Name")
Ccol=gridrowcolumnvalue("Viw_Prod.Packing")
Rndx=1
formula="new"
end if
if CCust<>gridrowcolumnvalue("Viw_Prod.Packing") then
formula="same"
Rndx=Rndx+1
else
formula="Newag"
end if
if Ccol<>gridrowcolumnvalue("Viw_Prod.Packing") then
Rndx=1
end if
if gridrowcolumnvalue("Viw_Prod.Packing")="Pilot" then
totperx(Rndx)=totperx(Rndx)+currentfieldvalue
end if
formula=totext(currentfieldvalue,0,"") ' despite of cstr function totext will change 45 to 45 while cstr changes 45 to 45.00
CCust=gridrowcolumnvalue("Table_Cust.Name")
Ccol=gridrowcolumnvalue("Viw_Prod.Packing")
现在我们将编辑总计列
的“显示字符串”Global my as number
Global totperx(22) as number
whileprintingrecords
if my<1 then
my=1
end if
formula=currentfieldvalue-totperx(my)
my=my+1