'************************************************************************************* '* Name: CS 100-01 * '* Program: Putting It All Together * '* Date: 4/1/03 * '* Description: This program is designed to demonstrate files, arrays, & printing * '* using a Sub Procedure. * '* Adapted From: Programming in Visual Basic 6.0, Bradley/Millspaugh, 2002, * '* McGraw-Hill, Page 315 * '* Additional Notes: Remember to change Shell command! * '************************************************************************************* Option Explicit 'Global variables Dim intInFileNum As Integer Dim intOutFileNum As Integer Private Sub Form_Load() Const strDATA_FILE = "\SalesRepsData.csv" Const strINFO_FILE = "\SalesInfo.txt" Dim strFilePath As String 'Open the Files strFilePath = App.Path & strDATA_FILE intInFileNum = FreeFile Open strFilePath For Input As #intInFileNum strFilePath = App.Path & strINFO_FILE intOutFileNum = FreeFile Open strFilePath For Output As #intOutFileNum End Sub Private Sub PrintLeftAlignedData(strPrintData As String, intFileNum As Integer) ' Dim intFormattedLen As Integer ' Dim intTabPos As Integer ' intFormattedLen = Len(strPrintData) ' intTabPos = intPos - intFormattedLen picReport.Print strPrintData; Print #intFileNum, strPrintData; End Sub Private Sub PrintRightAlignedData(strPrintData As String, intPos As Integer, _ intFileNum As Integer) Dim intFormattedLen As Integer Dim intTabPos As Integer intFormattedLen = Len(strPrintData) intTabPos = intPos - intFormattedLen picReport.Print Tab(intTabPos); strPrintData; Print #intFileNum, Tab(intTabPos); strPrintData; End Sub Private Sub btnStart_Click() 'Constant Declarations Const intMAX_REPS = 15 Const intMAX_WKS = 4 Const intMAX_WIDTH = 15 'Variable Declarations Dim curSalesAmt(1 To intMAX_REPS, _ 1 To intMAX_WKS) As Currency Dim curSalesGrandTot As Currency Dim curSalesRepTot(1 To intMAX_REPS) As Currency Dim curWkSalesTot(1 To intMAX_WKS) As Currency Dim intCount As Integer Dim intFormattedLen As Integer Dim intNumReps As Integer Dim intPos As Integer Dim intRepIndx As Integer Dim intTabPos As Integer Dim intWkIndx As Integer Dim strFormatted As String Dim strSalesRep(1 To intMAX_REPS) As String 'Initialize the Variables For intRepIndx = 1 To intMAX_REPS curSalesRepTot(intRepIndx) = 0 Next intRepIndx For intWkIndx = 1 To intMAX_WKS curWkSalesTot(intWkIndx) = 0 Next intWkIndx curSalesGrandTot = 0 intNumReps = 0 'Read the Data Files Do Until EOF(intInFileNum) intNumReps = intNumReps + 1 Input #intInFileNum, strSalesRep(intNumReps) For intWkIndx = 1 To intMAX_WKS Input #intInFileNum, curSalesAmt(intNumReps, intWkIndx) Next intWkIndx Loop 'Calculate the Totals For intRepIndx = 1 To intNumReps For intWkIndx = 1 To intMAX_WKS curSalesRepTot(intRepIndx) = _ curSalesRepTot(intRepIndx) + _ curSalesAmt(intRepIndx, intWkIndx) curWkSalesTot(intWkIndx) = _ curWkSalesTot(intWkIndx) + _ curSalesAmt(intRepIndx, intWkIndx) curSalesGrandTot = curSalesGrandTot + _ curSalesAmt(intRepIndx, intWkIndx) Next intWkIndx Next intRepIndx 'Print The Report Headings intPos = intMAX_WIDTH Call PrintLeftAlignedData("Sales Rep Name", intOutFileNum) For intWkIndx = 1 To intMAX_WKS intPos = intPos + intMAX_WIDTH Call PrintRightAlignedData("Week " & intWkIndx, intPos, intOutFileNum) Next intWkIndx intPos = intPos + intMAX_WIDTH Call PrintRightAlignedData("Total Sales", intPos, intOutFileNum) picReport.Print Print #intOutFileNum, 'Previous 2 statements start output on next line For intRepIndx = 1 To intNumReps intPos = intMAX_WIDTH Call PrintLeftAlignedData(strSalesRep(intRepIndx), intOutFileNum) For intWkIndx = 1 To intMAX_WKS intPos = intPos + intMAX_WIDTH Call PrintRightAlignedData(FormatCurrency(curSalesAmt(intRepIndx, intWkIndx)), _ intPos, intOutFileNum) Next intWkIndx intPos = intPos + intMAX_WIDTH Call PrintRightAlignedData(FormatCurrency(curSalesRepTot(intRepIndx)), _ intPos, intOutFileNum) picReport.Print Print #intOutFileNum, Next intRepIndx intPos = intMAX_WIDTH Call PrintLeftAlignedData("Total Sales", intOutFileNum) For intWkIndx = 1 To intMAX_WKS intPos = intPos + intMAX_WIDTH Call PrintRightAlignedData(FormatCurrency(curWkSalesTot(intWkIndx)), _ intPos, intOutFileNum) Next intWkIndx intPos = intPos + intMAX_WIDTH Call PrintRightAlignedData(FormatCurrency(curSalesGrandTot), _ intPos, intOutFileNum) End Sub Private Sub btnEnd_Click() Close Shell "C:\WinNT\notepad.exe " & App.Path & "\SalesInfo.txt" ' Shell "C:\Windows\notepad.exe " & App.Path & "\SalesInfo.txt" End End Sub