Principales respuestas
DUDA TRANSACCION

Pregunta
-
Hola que tal? Estoy desarrollando una aplicacion que va a llevar a cabo una transaccion en la cual se va a generar un pedido y los detalles del mismo, ademas de actualizar una tabla productos donde uno de los atributos es la cantidad. El problema resulta en que no se como manejar las sentencias de transaccion; no se cuales son las sentencias necesarias ni donde deberia colocarlas debido a que estoy trabajando con una programacion en capas. Para poder entender de mejor manera la situacion, adjunto una copia del codigo determinando que codigo va en cada capa. Muchas gracias
Capa Datos:
public object crearPedido(string descripcion, int idCliente, string idRepartidor, double montoTotal, DateTime fecha)
{
comando.Connection = conexion.AbrirConexion();
comando.CommandText = "INSERT INTO PEDIDOSCLIENTES VALUES ('"+ descripcion +"','"+ idCliente +"','"+ idRepartidor +"','"+ montoTotal +"','"+ fecha +"')";
comando.ExecuteNonQuery();
comando.CommandText = "SELECT @@IDENTITY";
object identity = comando.ExecuteScalar();
return identity;
}Capa Negocio:
DPedidosCliente pedido = new DPedidosCliente();
public object crearPedidos(string descripcion, string idCliente, string idRepartidor, string montoTotal, string fecha)
{
object identity = pedido.crearPedido(descripcion, Convert.ToInt32(idCliente), idRepartidor, Convert.ToDouble(montoTotal), Convert.ToDateTime(fecha));
return identity;
}Capa Presentacion:
private void btnGrabar_Click(object sender, EventArgs e)
{
int suma = 0;
for (int fila = 0; fila < dgvItemsPedido.Rows.Count - 1; fila++)
{
suma += Convert.ToInt32(dgvItemsPedido.Rows[fila].Cells["precio"].Value);
}
NPedidosClientes pedido = new NPedidosClientes();
string identity = Convert.ToString(pedido.crearPedidos(txtDescripcion.Text, Convert.ToString(cmbCliente.SelectedValue), Convert.ToString(cmbRepartidor.SelectedValue), suma.ToString(), DateTime.Now.ToString()));
for (int fila = 0; fila < dgvItemsPedido.Rows.Count -1; fila++)
{
NDetallePedidos detalle = new NDetallePedidos();
detalle.insertarClientes(identity, dgvItemsPedido.Rows[fila].Cells["Producto"].Value.ToString(), dgvItemsPedido.Rows[fila].Cells["Cantidad"].Value.ToString(), dgvItemsPedido.Rows[fila].Cells["Precio"].Value.ToString());
NProductos producto = new NProductos();
producto.actualizarProductos(dgvItemsPedido.Rows[fila].Cells["Producto"].Value.ToString(), dgvItemsPedido.Rows[fila].Cells["Cantidad"].Value.ToString());
}
}private void btnGrabar_Click(object sender, EventArgs e)
{
int suma = 0;
for (int fila = 0; fila < dgvItemsPedido.Rows.Count - 1; fila++)
{
suma += Convert.ToInt32(dgvItemsPedido.Rows[fila].Cells["precio"].Value);
}
NPedidosClientes pedido = new NPedidosClientes();
string identity = Convert.ToString(pedido.crearPedidos(txtDescripcion.Text, Convert.ToString(cmbCliente.SelectedValue), Convert.ToString(cmbRepartidor.SelectedValue), suma.ToString(), DateTime.Now.ToString()));
for (int fila = 0; fila < dgvItemsPedido.Rows.Count -1; fila++)
{
NDetallePedidos detalle = new NDetallePedidos();
detalle.insertarClientes(identity, dgvItemsPedido.Rows[fila].Cells["Producto"].Value.ToString(), dgvItemsPedido.Rows[fila].Cells["Cantidad"].Value.ToString(), dgvItemsPedido.Rows[fila].Cells["Precio"].Value.ToString());
NProductos producto = new NProductos();
producto.actualizarProductos(dgvItemsPedido.Rows[fila].Cells["Producto"].Value.ToString(), dgvItemsPedido.Rows[fila].Cells["Cantidad"].Value.ToString());
}
}
Respuestas
-
hola
usa el TransacionScope
Implementar una transacción implícita mediante el ámbito de la transacción
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Lucas Ca viernes, 19 de octubre de 2018 19:34
Todas las respuestas
-
hola
usa el TransacionScope
Implementar una transacción implícita mediante el ámbito de la transacción
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Lucas Ca viernes, 19 de octubre de 2018 19:34
-
ademas usa parametros
public int crearPedido(string descripcion, int idCliente, string idRepartidor, double montoTotal, DateTime fecha) { var Connection = conexion.AbrirConexion(); string query = "INSERT INTO PEDIDOSCLIENTES VALUES (@descripcion, @qidCliente, @idRepartidor,@montoTotal, @fecha); SELECT SCOPE_IDENTITY"; SqlCommand comando = new SqlCommand(sql, Connection) comando.Parameters.AddWithValue("@descripcion", descripcion); comando.Parameters.AddWithValue("@idCliente", idCliente); comando.Parameters.AddWithValue("@idRepartidor", idRepartidor); comando.Parameters.AddWithValue("@montoTotal", montoTotal); comando.Parameters.AddWithValue("@fecha", fecha); return Convert.ToInt32(comando.ExecuteScalar()); }
saludosLeandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina