Click here to Skip to main content
15,879,613 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi,

is there any way I could display a data to the datagrid view Columns through depending on the value of a cell. I was working for a program relating a time and attendance system that would disperse the data from the csv file to the correct data column on the datagrid view. What I want to display is the time in and time out of the specific employee in one row, but what was happening was the time in and time out creates 2 row (1 for the time in and 1 for the time out)

Here's the code details:

Dim csvreader As New StreamReader(txtboxcsv.Text, System.Text.Encoding.Default)
Dim sline As String = ""
Do
sline = csvreader.ReadLine
    If sline Is Nothing Then Exit Do
    Dim columns() As String = sline.Split(",")
    Dim row As DataRow = datatable.NewRow
    Try

        row("Employee Number") = columns(0)
        If columns(2) = "IN" Then
            row("In Date") = columns(1)
        ElseIf columns(2) = "OUT" Then
            row("Out Date") = columns(1)
        End If
        row("In Location") = "PAM"
        row("Out Location") = "PAM"
        Dim d As String
        d = Convert.ToDateTime(columns(1)).ToString("dd-MMM-yyyy")
        row("Shift Starttime") = d + " " + "9:00"
        row("ShiftEndTime") = d + " " + "18:00"
        row("Attendance Date") = d
        row("Time Zone") = 150
        datatable.Rows.Add(row)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try

Loop
csvreader.Close()
DataGridView1.DataSource = datatable
Me.Text = datatable.Rows.Count & "rows"


What I have tried:

couldn't find the best condition i could use.
Posted
Updated 12-Aug-19 22:24pm
Comments
Maciej Los 13-Aug-19 8:53am    
What's your input? Please, provide sample data (of text file).
Richard MacCutchan 15-Aug-19 2:56am    
It appears that you need to read two rows of the csv data for one row of the DataGridView. You should only create a new row when you find a new employee entry.

1 solution

A better way is to use the Jet or ACE engines to read the .csv into a form that you can bind directly to the DataGridView. See Using OleDb to Import Text Files (tab, CSV, custom)[^], it's C# but should be fairly easy to convert.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900