Hola:
Para que el proceso funcione "aceptablemente" se debe hacer lo siguiente.
Cargar todas las ventas en un datagridview.
Abrir conexion
Abrir transaccion
Inicio de ciclo de datagridview
Insertar venta
Modificar stock
Fin de ciclo
Cerrar Transaccion
Cerrar conexion
Siguiendo este esquema, si ocurre algun error se dehacen todos los cambios, solo se graban todos los cambios si no hay error.
Un saludo desde Bilbo
Carlos