Está mal... porque :
  Cita:  DataGridView1.Rows(0).Cells(1).Tag
    con eso solo guardas los valores de la primera fila ya que estas asignando un 0 en el Rows, para ello podrias usar un for del cual tomar su valor incremental.   
Código C:
Ver originalfor (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                cmn.Parameters.AddWithValue("@cantidad", DataGridView1.Rows(i).Cells(0).Value)
            }
  
Saludos!

.