1. Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

Visual Basic

Discussion in 'Programming & Webmastering' started by shuggans, Dec 10, 2010.

  1. shuggans

    Joined:
    Dec 22, 2007
    Messages:
    175 (0.07/day)
    Thanks Received:
    7
    Location:
    Central Nebraska
    Me and a buddy have an assignment to write a program in visual basic that allows you to calculate interest, etc. on a loan. We've been sitting for hours tryign to figure out streamwriter because the program must also be able to save the input to the text boxes used to calculate the loan info to a text file.
    If anyone could tell us the error of our ways, it would be much appreciated

    Imports System.IO
    Public Class Console_MAIN

    Private Sub Console_MAIN_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
    'closes the program
    Me.Close()
    End Sub

    Private Sub Button_Exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Exit.Click
    'closes the program
    Me.Close()
    End Sub

    Private Sub AboutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutToolStripMenuItem.Click
    AboutBox1.Show()
    End Sub

    Private Sub Button_UpdateSchedule_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_UpdateSchedule.Click
    Dim VAR_LoanAmount As Decimal
    Dim VAR_LoanRate As String
    Dim VAR_LoanPeriod As Decimal
    Dim LoanInfo As StreamWriter

    VAR_LoanAmount = TextBox_LoanAmount.Text
    VAR_LoanRate = ComboBox_AnnualRate.Text
    VAR_LoanPeriod = TextBox_Years.Text
    LoanInfo = New IO.StreamWriter("loaninfo.txt", True)

    Try
    LoanInfo.WriteLine(Now())
    LoanInfo.Write(VAR_LoanAmount, VAR_LoanRate, VAR_LoanPeriod)
    LoanInfo.WriteLine()
    LoanInfo.WriteLine()
    Catch
    MessageBox.Show("Error writing file")
    End Try
    End Sub
    End Class

    This has resulted in a blank text file, and if you click the button again, it crashes the program. Please help!
     
  2. streetfighter 2

    streetfighter 2 New Member

    Joined:
    Jul 26, 2010
    Messages:
    1,658 (1.03/day)
    Thanks Received:
    732
    Location:
    Philly
    It's been a couple years since I did anything in VB but I'd try a couple things.

    You'll definitely want to add this line below your last "WriteLine()" statement:
    Code:
    LoanInfo.[url="http://msdn.microsoft.com/en-us/library/system.io.streamwriter.flush(VS.80).aspx"]Flush[/url]()
    And/Or you can try this:
    http://msdn.microsoft.com/en-us/library/hxwfzt61(v=VS.90).aspx

    Either way about it you should remember to close the file
     
    Last edited: Dec 10, 2010
    shuggans says thanks.
  3. Ross211

    Ross211

    Joined:
    Jan 9, 2010
    Messages:
    473 (0.26/day)
    Thanks Received:
    115
    Location:
    Kansas
    shuggans, I believe you meant to say the program must also be able to save the input to from the text boxes used to calculate the loan info and write to a text file


    I would avoid using the IO.StreamWriter class and use the StreamWriter class like below. Make sure you have Imports System.IO at the top of all of your code.

    try this -

    Code:
        Public Sub WriteSerials()
            Using Writer As New StreamWriter(selectedSystem + ".txt", False)
                For k = 0 To lsbDisplay.Items.Count - 1
                    Writer.Write(systemSerials(k).systemSerial + ",")
                    Writer.Write(systemSerials(k).boughtFrom + ",")
                    Writer.Write(systemSerials(k).tradeDate + ",")
                    Writer.Write(systemSerials(k).employee + ",")
                    Writer.WriteLine()
                Next
                Writer.Write(systemSerial + ",")
                Writer.Write(boughtFrom + ",")
                Writer.Write(Now.Date + ",")
                Writer.Write(employee + ",")
            End Using
            '  Array.Clear(systemSerials, 0, systemSerials.Length)
        End Sub
    
    This is code from a program I wrote but I know this method works. When you create your Streamwriter object put the location of your txt file you want to write to.

    Basically try this -

    Code:
    Using Writer As New Streamwriter("C:\nameoftext.txt", False)
    
    End Using
    
    Or try this -

    Code:
    Using Writer As New Streamwriter("C:\nameoftext.txt", True)
    
    End Using
    
     
    Last edited: Dec 10, 2010
    shuggans says thanks.
  4. FordGT90Concept

    FordGT90Concept "I go fast!1!11!1!"

    Joined:
    Oct 13, 2008
    Messages:
    14,122 (6.23/day)
    Thanks Received:
    3,939
    Location:
    IA, USA
    There's a few problems here. First, a StreamWriter handles only strings so it doesn't make sense to convert everything to a different type and then back to string again.

    Second, as streetfighter 2 pointed out, you need to Flush() it (commits the data in the buffer to the hard drive).

    Thirdly, after you are done with a file, you must Close() it (ending the stream).

    Fourthly, there is no StreamWriter.Write() method that accepts Write(decimal, string, decimal) for arguments.

    Code with those changes implemented:
    Code:
        Private Sub Button_UpdateSchedule_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_UpdateSchedule.Click
            Dim LoanInfo As StreamWriter = New IO.StreamWriter("loaninfo.txt", True) ' Declare and instaniate on one line
            Try
                LoanInfo.WriteLine(Now())
                LoanInfo.WriteLine(TextBox_LoanAmount.Text)
                LoanInfo.WriteLine(VAR_LoanRate.Text)
                LoanInfo.WriteLine(VAR_LoanPeriod.Text)
                LoanInfo.Flush() ' Commit changes to file.
            Catch
                MessageBox.Show("Error writing file")
            End Try
            LoanInfo.Close() ' Free the file stream.
        End Sub


    They are the same thing. How you reference is programmer preference. I tend to do a lot of importing while others may not.


    The boolean value at the end is for appending (true/false). Default is false (zero-lengths the file when the stream is opened).
     
    Last edited: Dec 10, 2010
    shuggans says thanks.
    Crunching for Team TPU
  5. shuggans

    Joined:
    Dec 22, 2007
    Messages:
    175 (0.07/day)
    Thanks Received:
    7
    Location:
    Central Nebraska
    This worked great! Thanks so much!
     
    streetfighter 2 says thanks.

Currently Active Users Viewing This Thread: 1 (0 members and 1 guest)

Share This Page