Sub-total not working... Am I doing it wrong?

Posted by Joseph Kreifels on 20-Jan-2017 08:48

I want to use sub-total to  get information based on a part number.

It's not working, so I built very basic code for debugging, this basic code is sort of like I have it below.

My "for each" has the "break by <...>"

I have added

1:   "accumulate <...>( sub-total ).

2:   if last-of(<...>) then
         message (accum sub-total <...>) view-as alert-box.

This is just giving a running total. It uses the sub-total from the last group and totals it onto the sub-total of the current group.

Imagine

A  1
A  2
A  3
A  4
---
10 Total

B  1
B  2
B  2
B  3
------
8 Total.

Instead and getting 8 total, I get 18. That's 8 added onto the 10 before it.

Posted by Stefan Drissen on 20-Jan-2017 09:01

define temp-table tt 
   field cc as char
   field ii as int
   .
   
create tt. assign tt.cc = "A" tt.ii = 1.   
create tt. assign tt.cc = "A" tt.ii = 2.   
create tt. assign tt.cc = "A" tt.ii = 3.   
create tt. assign tt.cc = "A" tt.ii = 4.   


create tt. assign tt.cc = "B" tt.ii = 1.   
create tt. assign tt.cc = "B" tt.ii = 2.   
create tt. assign tt.cc = "B" tt.ii = 2.   
create tt. assign tt.cc = "B" tt.ii = 3.   

for each tt break by tt.cc:

   accumulate tt.ii ( sub-total by tt.cc ).
   
   display
      tt.cc
      tt.ii
      .
      
   if last-of( tt.cc ) then 
      display accum sub-total by tt.cc( tt.ii  ).


end.

All Replies

Posted by napmo on 20-Jan-2017 08:56

from the top of my head you should use

message (accum sub-total by xxx)

Posted by Stefan Drissen on 20-Jan-2017 09:01

define temp-table tt 
   field cc as char
   field ii as int
   .
   
create tt. assign tt.cc = "A" tt.ii = 1.   
create tt. assign tt.cc = "A" tt.ii = 2.   
create tt. assign tt.cc = "A" tt.ii = 3.   
create tt. assign tt.cc = "A" tt.ii = 4.   


create tt. assign tt.cc = "B" tt.ii = 1.   
create tt. assign tt.cc = "B" tt.ii = 2.   
create tt. assign tt.cc = "B" tt.ii = 2.   
create tt. assign tt.cc = "B" tt.ii = 3.   

for each tt break by tt.cc:

   accumulate tt.ii ( sub-total by tt.cc ).
   
   display
      tt.cc
      tt.ii
      .
      
   if last-of( tt.cc ) then 
      display accum sub-total by tt.cc( tt.ii  ).


end.

Posted by Joseph Kreifels on 20-Jan-2017 09:15

Thanks Stefan Drissen. That's  worked, now hopefully I can implement this into the real project.

This thread is closed