inlezen csv in datagridview, edit en save csvfile met dezelfde naam

Status
Niet open voor verdere reacties.

Orcaa

Gebruiker
Lid geworden
1 nov 2010
Berichten
125
Hallo,

Heb een applicatie in VB2010 waarbij er een csv file met 4 kolommen ingelezen wordt in een datagridview op een form. Nu kan er in datagridview ge-edit of toegevoegd worden en dan moet dit weer gesaved worden in dezelfde csv file.
Krijg nu echter een foutmelding dat de file niet gesaved kan worden omdat ie in gebruik is.

Heeft iemand een idee hoe dit op te lossen.

Alvast bedankt.

Heb screenshot foutmeldinge n code toegevoegd

error_vb.PNG

Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim fName As String = ""
        OpenFileDialog1.InitialDirectory = "H:\Data\2014\Software\VB2010\"
        OpenFileDialog1.Filter = "CSV files (*.csv)|*.CSV"
        OpenFileDialog1.FilterIndex = 2
        OpenFileDialog1.RestoreDirectory = True

        If (OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            fName = OpenFileDialog1.FileName
        End If

        Me.TextBox1.Text = fName

        Dim TextLine As String = ""
        Dim SplitLine() As String
        DataGridView1.ColumnCount = 5
        DataGridView1.Columns(0).Name = "Name"
        DataGridView1.Columns(1).Name = "Gender"
        DataGridView1.Columns(2).Name = "Age"
        DataGridView1.Columns(3).Name = "Ranking"
        DataGridView1.Columns(4).Name = "Date"

        If System.IO.File.Exists(fName) = True Then
            Dim objReader As New System.IO.StreamReader(fName)
            Do While objReader.Peek() <> -1
                TextLine = objReader.ReadLine()
                SplitLine = Split(TextLine, ",")
                Me.DataGridView1.Rows.Add(SplitLine)
            Loop
        Else
            MsgBox("File Does Not Exist")
        End If

    End Sub


    Private Sub SaveGridDataInFile(ByRef fName As String)
        'method called by button2
        Dim I As Integer = 0
        Dim j As Integer = 0
        Dim cellvalue$
        Dim rowLine As String = ""

        Try
            Dim objWriter As New System.IO.StreamWriter(fName, True)
            For j = 0 To (DataGridView1.Rows.Count - 2)
                For I = 0 To (DataGridView1.Columns.Count - 1)
                    If Not TypeOf DataGridView1.CurrentRow.Cells.Item(I).Value Is DBNull Then
                        cellvalue = DataGridView1.Item(I, j).Value
                    Else
                        cellvalue = ""
                    End If
                    rowLine = rowLine + cellvalue + ","
                Next
                objWriter.WriteLine(rowLine)
                rowLine = ""
            Next
            objWriter.Close()
            MsgBox("Text written to file")
        Catch e As Exception
            MessageBox.Show("Error occured while writing to the file." + e.ToString())
        Finally
            FileClose(1)

        End Try

    End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan