Download presentation
Presentation is loading. Please wait.
Published byErica Stokes Modified over 9 years ago
1
Break Processing Please use speaker notes for additional information!
2
Minor Break
3
Private Sub Form_Load() If Right(App.Path, 1) <> "\" Then Open App.Path & "\Minor.txt" For Input As #1 Else Open App.Path & "Minor.txt" For Input As #1 End If holddept = "" End Sub When the form is loaded I am going to check the right most character of the path to see it is not equal to a slash. If the slash is not there then the path to the text file being read is opened as the current path concatenated with a slash and the name of the file. If the slash is already there then the file is opened as the application path including the slash followed by the name of the file. “For the App object, Path specifies the path of the project.VBP file when running the application from the development environment or the path of the.exe file when running the application as an executable file.” Quote from the help file with Visual Basic. The variable holddept which will be used with the break processing is set to null. It is defined in the general area so it is available in all Subs. Minor.txt "12","500" "12","100" "12",”050" "15",”200" "15",”100" "15","300" "15",”060" "17",”020" "17","240"
4
Dim mintot As Integer, fintot As Integer Dim holddept As String Option Explicit Private Sub cmdExit_Click() End End Sub Private Sub Form_Load() If Right(App.Path, 1) <> "\" Then Open App.Path & "\Minor.txt" For Input As #1 Else Open App.Path & "Minor.txt" For Input As #1 End If holddept = "" End Sub Private Sub frmProcess_Click() Dim deptno As String, amt As String If Not EOF(1) Then Input #1, deptno, amt If holddept <> deptno Then If holddept <> "" Then picOutput.Print "Dept Total: "; Format(mintot, "Currency") holddept = deptno mintot = 0 Else holddept = deptno End If picOutput.Print Tab(3); deptno; Tab(7); Format(amt, "Currency") mintot = mintot + Val(amt) fintot = fintot + Val(amt) Else MsgBox "End of File", vbOKOnly, "EOF" picOutput.Print "Dept Total: "; Format(mintot, "Currency") picOutput.Print "Final Total: "; Format(fintot, "Currency") End If End Sub Minor Break Minor.txt "12","500" "12","100" "12",”050" "15",”200" "15",”100" "15","300" "15",”060" "17",”020" "17","240"
5
Minor Total Processing DeptAmount 12 500 12 100 12 50 15 200 15 100 15 300 15 60 17 20 17 240 Dept # Amount 12 500 12 100 12 50 Total 12: 650 15 200 15 100 15 300 15 60 Total 15: 660 17 20 17 240 Total 17: 260 Final Total: 1570 This is the input data - each record on the file contains a dept # and an amount. Input/Output Output report that is produced containing the input records and a total each time the department number changed. Records from department 12. Total for department 12. Final total for all departments.
6
Logic of Minor Break Processing Break processing involves printing totals when there is a change in processing caused by a new control number being read –In this example the DEPT # is the control number The input file must be in order by the control number A hold area must be established to hold the control number to be compared against When a break occurs - MINOR TOTAL processing –The minor total line is written –The minor accumulator is reset to 0 for the next group –The hold area is reset to contain the control number from the record that caused the break Processing of the individual record on the file - DETAIL processing –Detail processing occurs when there is no break or after the break has been handled (minor total line written and accumulator and hold area reset) –Detail processing consists of: Writing the detail record Adding to the minor accumulator Adding to the final accumulator At EOF –The total for the last control group (in this case the last dept) must be written –The final total must be written Minor break - logic
7
NOT EOF holddept deptno INPUT deptno, amt holddept “ setup and write minor line Reset: holddept = deptno mintot = 0 Set: holddept= deptno setup and write detail line add to minor & final accums set up and write minor line set up and write final line If the deptno on the input is not equal to the hold dept, we either have a break or it is the first record. Checking holddept for spaces handles this If a break happened the minor total is written and the holddept is reset with the deptno that caused the break and the mintot is reset to 0 for the next group. Processing the detail record involves writing a line and adding to the accumulators. At EOF, the minor total for the last group must be written followed by the final total line. Minor logic
8
Private Sub Form_Load()... holddept = "" End Sub Minor break processing - VB code Dim mintot As Integer, fintot As Integer Dim holddept As String In the general area, I dimensioned a variable for the minor total and the final total. I also set up a hold area for the dept so that I could compare and determine when a break has happened. When the form is loaded I set the holddept = “”. Break processing calls for setting up accumulators to hold the totals you need to accumulate and a hold area to keep the data you are comparing to in order to determine if a break has happened. That hold area should be initialized so it is empty.
9
Minor break processing - VB code Private Sub frmProcess_Click() Dim deptno As String, amt As String If Not EOF(1) Then Input #1, deptno, amt If holddept <> deptno Then If holddept <> "" Then picOutput.Print "Dept Total: "; Format(mintot, "Currency") holddept = deptno mintot = 0 Else holddept = deptno End If picOutput.Print Tab(3); deptno; Tab(7); Format(amt, "Currency") mintot = mintot + Val(amt) fintot = fintot + Val(amt) Else MsgBox "End of File", vbOKOnly, "EOF" picOutput.Print "Dept Total: "; Format(mintot, "Currency") picOutput.Print "Final Total: "; Format(fintot, "Currency") End If End Sub If it is not EOF, I read from input #1 (note that this would have been opened when the form was loaded) and store in deptno and amt. I compare to see if the contents of the hold area for department is NOT equal to the dept # I just read and to make sure the hold area isn’t empty. Empty tells me this is the first record being processed, not a break. If both IFs true, then a break has happened. I print the break information and reset the holddept to the deptno I just read and reset the minor total to 0. If the hold area for department is not equal to the dept # I just read but the hold dept is equal to spaces, then we are dealing with the first record and we need to move the dept # on the first record to the hold area for department. After checking for breaks, I write the detail line and add to the minor total and final total accumulator. When EOF has been reached, the minor total line for the last dept must be written. Then the final total line must be written.
10
Minor.txt "12","500" "12","100" "12",”050" "15",”200" "15",”100" "15","300" "15",”060" "17",”020" "17","240" Private Sub frmProcess_Click() Dim deptno As String, amt As String If Not EOF(1) Then Input #1, deptno, amt If holddept <> deptno Then If holddept <> "" Then picOutput.Print "Dept Total: "; Format(mintot, "Currency") holddept = deptno mintot = 0 Else holddept = deptno End If picOutput.Print Tab(3); deptno; Tab(7); Format(amt, "Currency") mintot = mintot + Val(amt) fintot = fintot + Val(amt) Else MsgBox "End of File", vbOKOnly, "EOF" picOutput.Print "Dept Total: "; Format(mintot, "Currency") picOutput.Print "Final Total: "; Format(fintot, "Currency") End If End Sub holddept 12 holddept is null and deptno is 12 so they are not equal. holddept is null, else is executed Processing It is not EOF Record is displayed and the amount is added to the accumulators. mintot 500 fintot 500
11
Result of first click of Process button picOutput.Print Tab(3); deptno; Tab(7); Format(amt, "Currency") The tab formatting moves to the designated position. In this case it moves to 3 to display the deptno and then to 7 to display the amt. Note the formatting of the amt to currency. Minor.txt "12","500" "12","100" "12",”050" "15",”200" "15",”100" "15","300" "15",”060" "17",”020" "17","240"
12
Minor.txt "12","500" "12","100" "12",”050" "15",”200" "15",”100" "15","300" "15",”060" "17",”020" "17","240" Private Sub frmProcess_Click() Dim deptno As String, amt As String If Not EOF(1) Then Input #1, deptno, amt If holddept <> deptno Then If holddept <> "" Then picOutput.Print "Dept Total: "; Format(mintot, "Currency") holddept = deptno mintot = 0 Else holddept = deptno End If picOutput.Print Tab(3); deptno; Tab(7); Format(amt, "Currency") mintot = mintot + Val(amt) fintot = fintot + Val(amt) Else MsgBox "End of File", vbOKOnly, "EOF" picOutput.Print "Dept Total: "; Format(mintot, "Currency") picOutput.Print "Final Total: "; Format(fintot, "Currency") End If End Sub holddept 12 holddept and deptno are 12. if ends Processing It is not EOF Record is displayed and the amount is added to the accumulators. mintot 600 fintot 600
13
Minor.txt "12","500" "12","100" "12",”050" "15",”200" "15",”100" "15","300" "15",”060" "17",”020" "17","240" Processing minor break
14
Minor.txt "12","500" "12","100" "12",”050" "15",”200" "15",”100" "15","300" "15",”060" "17",”020" "17","240" Private Sub frmProcess_Click() Dim deptno As String, amt As String If Not EOF(1) Then Input #1, deptno, amt If holddept <> deptno Then If holddept <> "" Then picOutput.Print "Dept Total: "; Format(mintot, "Currency") holddept = deptno mintot = 0 Else holddept = deptno End If picOutput.Print Tab(3); deptno; Tab(7); Format(amt, "Currency") mintot = mintot + Val(amt) fintot = fintot + Val(amt) Else MsgBox "End of File", vbOKOnly, "EOF" picOutput.Print "Dept Total: "; Format(mintot, "Currency") picOutput.Print "Final Total: "; Format(fintot, "Currency") End If End Sub holddept 12 holddept and deptno are 12. if ends Processing It is not EOF Record is displayed and the amount is added to the accumulators. mintot 650 fintot 650
15
Minor.txt "12","500" "12","100" "12",”050" "15",”200" "15",”100" "15","300" "15",”060" "17",”020" "17","240" Processing minor break
16
Minor.txt "12","500" "12","100" "12",”050" "15",”200" "15",”100" "15","300" "15",”060" "17",”020" "17","240" Private Sub frmProcess_Click() Dim deptno As String, amt As String If Not EOF(1) Then Input #1, deptno, amt If holddept <> deptno Then If holddept <> "" Then picOutput.Print "Dept Total: "; Format(mintot, "Currency") holddept = deptno mintot = 0 Else holddept = deptno End If picOutput.Print Tab(3); deptno; Tab(7); Format(amt, "Currency") mintot = mintot + Val(amt) fintot = fintot + Val(amt) Else MsgBox "End of File", vbOKOnly, "EOF" picOutput.Print "Dept Total: "; Format(mintot, "Currency") picOutput.Print "Final Total: "; Format(fintot, "Currency") End If End Sub holddept 12 reset to 15 holddept is 12 and deptno is 15 so then is processed. Processing It is not EOF Record is displayed and the amount is added to the accumulators. mintot 650 reset to 0 200 fintot 650 850 holddept is not null it is equal to 12 The total is displayed on the screen and then the hold dept is reset to the deptno which is 15 and the minor total is reset to 0. The total from the accumulator is displayed so you see 650. Then the mintot is reset to 0. Then as the record is processed the amount on the record that caused the break is added to mintot and fintot.
17
Processing minor break Minor.txt "12","500" "12","100" "12",”050" "15",”200" "15",”100" "15","300" "15",”060" "17",”020" "17","240" Because the record that is being processed has a different department number, a break happened. This caused the department total containing the amount from the accumulator to print. After the total prints, the record that caused the break is processed which results in the display of the record.
18
Minor.txt "12","500" "12","100" "12",”050" "15",”200" "15",”100" "15","300" "15",”060" "17",”020" "17","240” EOF Private Sub frmProcess_Click() Dim deptno As String, amt As String If Not EOF(1) Then Input #1, deptno, amt If holddept <> deptno Then If holddept <> "" Then picOutput.Print "Dept Total: "; Format(mintot, "Currency") holddept = deptno mintot = 0 Else holddept = deptno End If picOutput.Print Tab(3); deptno; Tab(7); Format(amt, "Currency") mintot = mintot + Val(amt) fintot = fintot + Val(amt) Else MsgBox "End of File", vbOKOnly, "EOF" picOutput.Print "Dept Total: "; Format(mintot, "Currency") picOutput.Print "Final Total: "; Format(fintot, "Currency") End If End Sub holddept 17 Processing It is EOF mintot 260 fintot 1570
19
MsgBox "End of File", vbOKOnly, "EOF" picOutput.Print "Dept Total: "; Format(mintot, "Currency") picOutput.Print "Final Total: "; Format(fintot, "Currency") EOF
20
Minor, Intermediate and Major Breaks divno deptno brno amt "03","24","27","500" "03","24","27","600" "03","24","27","200" "03","24","28","150" "03","24","28","275" "03","24","28","620" "03","25","15","120" "03","25","15","175" "03","25","15","600" "03","25","17","500" "03","25","17","100" "03","25","20","150" "03","25","20","220" "04","24","27","125" "04","24","27","250" "04","24","27","450" "04","24","27","600" "04","24","28","100" "04","24","28","126" "04","24","29","600" "04","24","29","240" "04","25","15","120" "04","25","17","600" "04","25","17","555"
21
NOT EOF INPUT divno, brno, deptno, amt holddiv = “” divno, brno and deptno to holddiv, holdbr, holddept Break check msgbox display dept total display branch total display division total display final total close
22
holddiv <> divno display dept total display branch total display division total divno, brno and deptno to holddiv, holdbr, holddept 0 to mintot, intertot, majtot holdbr <> brno Break check display dept total display branch total brno and deptno to holdbr, holddept 0 to mintot, intertot display dept total deptno to holddept 0 to mintot display detail line - not done in this program add to mintot, intertot, majtot close
23
Dim mintot As Integer, intertot As Integer Dim majtot As Integer, fintot As Integer Dim holddept As String, holdbr As String Dim holddiv As String Option Explicit Private Sub cmdExit_Click() End End Sub Private Sub Form_Load() Open App.Path & "\MIM.txt" For Input As #1 holddept = "" holdbr = "" holddiv = "" End Sub Minor, intermediate and major breaks These variables are in the general area. The hold areas are initialized at null. Using the application path concatenated with a slash and the file name.
24
Private Sub frmProcess_Click() Dim divno As String, brno As String Dim deptno As String, amt As String If Not EOF(1) Then Input #1, divno, brno, deptno, amt If holddiv = "" Then holddiv = divno holdbr = brno holddept = deptno End If If holddiv <> divno Then picOutput.Print "Dept Total: "; holddept; Tab(20); Format(mintot, "Currency") picOutput.Print "Branch Total: "; holdbr; Tab(20); Format(intertot, "Currency") picOutput.Print "Division Total: "; holddiv; Tab(20); Format(majtot, "Currency") holddiv = divno holdbr = brno holddept = deptno mintot = 0 intertot = 0 majtot = 0 Else First part of frmProcess_Click()
25
If holdbr <> brno Then picOutput.Print "Dept Total: "; holddept; Tab(20); Format(mintot, "Currency") picOutput.Print "Branch Total: "; holdbr; Tab(20); Format(intertot, "Currency") holdbr = brno holddept = deptno mintot = 0 intertot = 0 Else If holddept <> deptno Then picOutput.Print "Dept Total: "; holddept; Tab(20); Format(mintot, "Currency") holddept = deptno mintot = 0 End If Rem picOutput.Print Tab(3); deptno; Tab(7); Format(amt, "Currency") mintot = mintot + Val(amt) intertot = intertot + Val(amt) majtot = majtot + Val(amt) fintot = fintot + Val(amt) Else MsgBox "End of File", vbOKOnly, "EOF" picOutput.Print "Dept Total: "; holddept; Tab(20); Format(mintot, "Currency") picOutput.Print "Branch Total: "; holdbr; Tab(20); Format(intertot, "Currency") picOutput.Print "Division Total: "; holddiv; Tab(20); Format(majtot, "Currency") picOutput.Print "Final Total: "; Format(fintot, "Currency") End If End Sub Second part of frmProcess_Click()
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.