//metodo autogenerar public int autogenera() { //instanciar la conexion conexionBL cn = new conexionBL(); //comando que selecciona el count de tb_pedido SqlCommand cmd = new SqlCommand("select count(*) from tb_pedido", cn.getcn); cn.getcn.Open(); //abrir la conexion int i = (int)cmd.ExecuteScalar() + 1; //ejecuto y retorno count cn.getcn.Close(); //retorno el nuevo id del producto return(i); }
//metodo que registra el pedido y sus detalles public string grabar(DataPedido dp) { string msg = ""; //autogenerado int np = autogenera(); //instancia la conexion conexionBL cn = new conexionBL(); //abrir conexion cn.getcn.Open(); //definir que es una transaccion SqlTransaction tr = cn.getcn.BeginTransaction(IsolationLevel.Serializable); //comando que ejecuta el insert en la tabla tb_pedido SqlCommand cmd = new SqlCommand("Insert into tb_pedido values(@n, @f, @c, @m)", cn.getcn, tr); //lista de parametros cmd.Parameters.Add("@n", SqlDbType.Int).Value = np; cmd.Parameters.Add("@f", SqlDbType.DateTime).Value = dp.Fpedido; cmd.Parameters.Add("@c", SqlDbType.VarChar).Value = dp.Cliente; cmd.Parameters.Add("@m", SqlDbType.Decimal).Value = dp.Monto; try { //ejecuto cmd.ExecuteNonQuery(); //grabar el detalle foreach (DataRow fila in registro.Rows) { //comando que ejecuta el insert en la tabla tb_pedido SqlCommand cmd2 = new SqlCommand("Insert into tb_pedido values(@n, @prod, @pred, @cant)", cn.getcn, tr); //lista de parametros cmd2.Parameters.Add("@n", SqlDbType.Int).Value = np; cmd2.Parameters.Add("@prod", SqlDbType.Int).Value = fila[0]; cmd2.Parameters.Add("@pred", SqlDbType.Decimal).Value = fila[2]; cmd2.Parameters.Add("@cant", SqlDbType.Int).Value = fila[3]; } tr.Commit(); //actualiza base de datos msg = "Pedido agregar"; } catch (Exception ex) { //de haber un error lo capturo msg = ex.Message; //deshacemos la operacion tr.Rollback(); } finally { cn.getcn.Close(); //cerramos la conexion } return(msg); }