I tried to follow your code and modified it with a data reader.
Public Function ExecuteQuery(ByVal query As String) As Boolean
Dim con As System.Data.OleDb.OleDbConnection
Dim cmd As System.Data.OleDb.OleDbCommand
con = New System.Data.OleDb.OleDbConnection(DSN)
cmd = New System.Data.OleDb.OleDbCommand(query, con)
cmd.CommandType = CommandType.Text
Try
con.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
Throw ex
Finally
con.Close()
End Try
Return True
End Function
Private Function frmUploader\_upload() As Boolean
Dim strConnection As String
Dim strCommand As String
Dim query As String
Dim excelConnection As System.Data.OleDb.OleDbConnection
Dim excelCommand As System.Data.OleDb.OleDbCommand
Dim dr As System.Data.OleDb.OleDbDataReader
Dim dt As New DataTable
Dim i As Integer = 0
strConnection = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=Excel 8.0;Persist Security Info=False", Me.tbFile.Text)
excelConnection = New System.Data.OleDb.OleDbConnection(strConnection)
strCommand = String.Format("SELECT \* FROM \[{0}$\]", Me.cbSheet.Text)
excelCommand = New System.Data.OleDb.OleDbCommand(strCommand, excelConnection)
Try
excelConnection.Open()
dr = excelCommand.ExecuteReader
While dr.Read
query = String.Format("INSERT INTO Sl\_Logproof\_200311 VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}',{18},{19},{20},{21},'{22}',{23},{24},'{25}','{26}','{27}',{28})", \_
ReplaceQuote(dr(0).ToString), ReplaceQuote(dr(1).ToString), ReplaceQuote(dr(2).ToString), ReplaceQuote(dr(3).ToString), ReplaceQuote(dr(4).ToString), ReplaceQuote(dr(5).ToString), ReplaceQuote(dr(6).ToString), ReplaceQuote(dr(7).ToString), ReplaceQuote(dr(8).ToString), ReplaceQuote(dr(9).ToString), ReplaceQuote(dr(10).ToString), \_
ReplaceQuote(dr(11).ToString), ReplaceQuote(dr(12).ToString), ReplaceQuote(dr(13).ToString), ReplaceQuote(dr(14).ToString), ReplaceQuote(dr(15).ToString), ReplaceQuote(dr(16).ToString), ReplaceQuote(dr(17).ToString), IsEmptyText(dr(18).ToString, "0"), IsEmptyText(dr(19).ToString, "0"), IsEmptyText(dr(20).ToString, "0"), \_
IsEmptyText(dr(21)