No me actualiza los registros
Publicado por Miguel (1 intervención) el 07/10/2018 03:08:15
Buenas tardes, en una clase de primer capa llamada Datos tengo el sig. codig:
En otra capa que es la logica este codigo en una clase:
public static string ActualizarPrecios(int idproducto, decimal porcentaje)
{
dProductos Obj = new dProductos();
Obj.Idproducto = idproducto;
Obj.Porcentaje = porcentaje;
return Obj.ActualizarPrecios(Obj);
}
y en el formulario tengo un DataGridView con una columna de tipo CheckBox para seleccionar los registros con este codigo
Una vez seleccionadas las filas que quiero actualizar en un boton tengo el sig codigo para actualizar
No me da error pero me arroja el mensaje del ExecuteNonQuery de mi primera clase y no me actualiza los registros: rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Actualizaron los Registros";
probe desde el SQLServer el procedimiento almacenado y al colocar los parametros funciona bien, entonces el problema lo tengo en alguna clase o en el codido del formulario, alguien me podria decir donde esta el error
Muchas gracias de antemano, Saludos para todos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public string ActualizarPrecios(dProductos Productos)
{
string rpta = "";
SqlConnection SqlCon = new SqlConnection();
try
{
SqlCon.ConnectionString = Conexion.Cn;
SqlCon.Open();
SqlCommand SqlCmd = new SqlCommand();
SqlCmd.Connection = SqlCon;
SqlCmd.CommandText = "spactualizar_precios";
SqlCmd.CommandType = CommandType.StoredProcedure;
SqlParameter ParIdproducto = new SqlParameter();
ParIdproducto.ParameterName = "@idproducto";
ParIdproducto.SqlDbType = SqlDbType.Int;
ParIdproducto.Direction = ParameterDirection.Output;
SqlCmd.Parameters.Add(ParIdproducto);
SqlParameter ParPorcentaje = new SqlParameter();
ParPorcentaje.ParameterName = "@porcentaje";
ParPorcentaje.SqlDbType = SqlDbType.Decimal;
ParPorcentaje.Precision = 3;
ParPorcentaje.Scale = 2;
ParPorcentaje.Value = Productos.Porcentaje;
SqlCmd.Parameters.Add(ParPorcentaje);
rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Actualizaron los Registros";
}
catch (Exception ex)
{
rpta = ex.Message;
}
return rpta;
}
En otra capa que es la logica este codigo en una clase:
public static string ActualizarPrecios(int idproducto, decimal porcentaje)
{
dProductos Obj = new dProductos();
Obj.Idproducto = idproducto;
Obj.Porcentaje = porcentaje;
return Obj.ActualizarPrecios(Obj);
}
y en el formulario tengo un DataGridView con una columna de tipo CheckBox para seleccionar los registros con este codigo
1
2
3
4
5
6
7
8
private void dataListado_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == dataListado.Columns["Actualizar"].Index)
{
DataGridViewCheckBoxCell ChkActualizar = (DataGridViewCheckBoxCell)dataListado.Rows[e.RowIndex].Cells["Actualizar"];
ChkActualizar.Value = !Convert.ToBoolean(ChkActualizar.Value);
}
}
Una vez seleccionadas las filas que quiero actualizar en un boton tengo el sig codigo para actualizar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
private void btnActualizar_Click(object sender, EventArgs e)
{
try
{
DialogResult Opcion;
Opcion = MessageBox.Show("Realmente desea actualizar los precios de los artículos seleccionados", "Actualizador de Precios", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (Opcion == DialogResult.OK)
{
string Producto;
decimal Porcentaje = Convert.ToDecimal(this.txtPorcentaje.Text);
string Rpta = "";
foreach (DataGridViewRow row in dataListado.Rows)
{
if (Convert.ToBoolean(row.Cells[0].Value))
{
Producto = Convert.ToString(row.Cells[1].Value);
Rpta = nProductos.ActualizarPrecios(Convert.ToInt32(Producto), Porcentaje);
if (Rpta.Equals("OK"))
{
this.MensajeOk("Los precios fueron actualizados correctamente");
}
else
{
this.MensajeError(Rpta);
}
}
}
this.Mostrar();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + ex.StackTrace);
}
}
No me da error pero me arroja el mensaje del ExecuteNonQuery de mi primera clase y no me actualiza los registros: rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Actualizaron los Registros";
probe desde el SQLServer el procedimiento almacenado y al colocar los parametros funciona bien, entonces el problema lo tengo en alguna clase o en el codido del formulario, alguien me podria decir donde esta el error
Muchas gracias de antemano, Saludos para todos
Valora esta pregunta
0