where order_no = @a
cmd.Parameters.AddWithValue("@a", textBox1.Text);
The text in
textBox1
does not change between iterations of your loop. You are updating the same row every time.
At a guess, you should be pulling the value from the current row, as you are doing for the other parameters.