Search code examples
vb.netdatatabledatarow

getting row value from datatable


Dim flag As Boolean = True

Dim fileName As String = Path.GetFileName(FileUpload1.PostedFile.FileName)

Dim fileExtension As String = Path.GetExtension(FileUpload1.PostedFile.FileName)

Dim fileLocation As String = Server.MapPath("~/Upload/" & fileName)

'Check whether file extension is xls or xslx
If fileExtension = ".xls" Then
    connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fileLocation & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=2"""
ElseIf fileExtension = ".xlsx" Then
    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fileLocation & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=2"""
End If

'Create OleDB Connection and OleDb Command

Dim con As New OleDbConnection(connectionString)
Dim cmd As New OleDbCommand()
cmd.CommandType = System.Data.CommandType.Text
cmd.Connection = con
Dim dAdapter As New OleDbDataAdapter(cmd)
Dim dtExcelRecords As New DataTable()
con.Open()
Dim dtExcelSheetName As DataTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
Dim getExcelSheetName As String = dtExcelSheetName.Rows(0)("Table_Name").ToString()
cmd.CommandText = "SELECT * FROM [" & getExcelSheetName & "]"
dAdapter.SelectCommand = cmd
dAdapter.Fill(dtExcelRecords)
con.Close()

Dim row As DataRow
For Each row In dtExcelRecords.Rows
    If Include.ConvertDbNullToEmpyString(row(2)) = "" Then
        MsgBox("Error in saving!")
        Exit For

    End If
    MsgBox(row(0) & " " & row(1) & " " & row(2) & " " & row(3))
Next


GridView1.DataSource = dtExcelRecords

GridView1.DataBind()
ViewState("file") = dtExcelRecords


Dim dataSet As DataSet = New DataSet("dataSet")
dataSet.Tables.Add(dtExcelRecords)
'' Display the DataSet contents as XML.
Console.WriteLine(dataSet.Tables(0).DataSet.GetXml())

I had code which use to upload file excel into datatable and show at gridview.

After show at gridview, the excel value which has been convert into datatable and showed at gridview will be saved to database.

My problem :

Dim row As DataRow
For Each row In dtExcelRecords.Rows
    If Include.ConvertDbNullToEmpyString(row(2)) = "" Then
        MsgBox("Error in saving!")
        Exit For
    End If
    MsgBox(row(0) & " " & row(1) & " " & row(2) & " " & row(3))
Next

that was code to get the row value.

But how to set datatable with new data row?

If I had null value in row 2, I wanted proses input data to datatable will stoped! And showing with new value from datarow value into gridView.

-------------------------------------- EDIT ----------------------------------

example :

upload file excel :

col1 ---- col2 ---- col3 ---- col4

tes1 ---- test1 ---- test1 ---- test1

tes2 ---- test2 ---- ---- test2

tes3 ---- test3 ---- test3 ---- test3

tes4 ---- test4 ---- ---- test4

and the result at gridview must like this :

col1 ---- col2 ---- col3 ---- col4

tes1 ---- test1 ---- test1 ---- test1

tes3 ---- test3 ---- test3 ---- test3


Solution

  • Try,

                    Dim dtData As DataTable
                    dtData = New DataTable
                    dtData.Columns.Add("Row0")
                    dtData.Columns.Add("Row1")
                    dtData.Columns.Add("Row2")
                    dtData.Columns.Add("Row3")
    
                    Dim row As DataRow
                    For Each row In dtExcelRecords.Rows
                        If Include.ConvertDbNullToEmpyString(row(2)) = "" Then
                            MsgBox("Error in saving!")
                            Exit For 'or exit Sub
                        End If
                        Dim dr As DataRow = dtData.NewRow
    
                        dr("Row0") = row(0)
                        dr("Row1") = row(1)
                        dr("Row2") = row(2)
                        dr("Row3") = row(3)
    
                        dtData.Rows.Add(dr) 'Add this line
    
                    Next
    
                    'Bind dtData to gridview
                    'Save data in dtData to database