Another observation. To work efficiently with parameters, you can define them outside the loop and simply replace the values inside the loop.
Consider the following example
oldb_cmd.Parameters.Add(New OleDbParameter("@GID", SqlDbType.Int))
oldb_cmd.Parameters.Add(New OleDbParameter("@FID", SqlDbType.Int))
oldb_cmd.Parameters.Add(New OleDbParameter("@WHR", SqlDbType.Int))
oldb_cmd.Parameters.Add(New OleDbParameter("@DPR", SqlDbType.Varchar, 15))
oldb_cmd.Parameters.Add(New OleDbParameter("@PHP", SqlDbType.Decimal))
oldb_cmd.Parameters.Add(New OleDbParameter("@TDP", SqlDbType.Decimal))
oldb_cmd.Prepare();
For i As Integer = 0 To DgvGPaySlip.Rows.Count - 1
command.Parameters["@GID"].Value = gps_id
command.Parameters["@FID"].Value = DgvGPaySlip.Rows(i).Cells(0).Value
command.Parameters["@WHR"].Value = DgvGPaySlip.Rows(i).Cells(2).Value
command.Parameters["@DPR"].Value = DgvGPaySlip.Rows(i).Cells(3).Value
command.Parameters["@PHP"].Value = DgvGPaySlip.Rows(i).Cells(4).Value
command.Parameters["@TDP"].Value = DgvGPaySlip.Rows(i).Cells(5).Value
oldb_cmd.ExecuteNonQuery()
Next