C sharp - No me actualiza los registros

 
Vista:

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

No me actualiza los registros

Publicado por kingk (14 intervenciones) el 08/10/2018 14:22:53
Hola, yo veo que el problema podria estar en el id del producto. En tu metodo ActualizarProductos no defines un valor para el parametro id. Tambien seria bueno que pusieras tu procedimiento almacenado, para poder ver si ese es el problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha disminuido su posición en 2 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

No me actualiza los registros

Publicado por Fabricio (3 intervenciones) el 09/10/2018 17:40:33
Buenas: He trabajado con mysql y no tengo experiencia alguna con sqlserver. De todas formas, veo que has agregado el idproducto como un parametro de salida:
...
ParIdproducto.Direction = ParameterDirection.Output;
....
Quizás se te ha pasado y sea ese el problema. Quizá estas utilizando un return 1 para cuando se realiza la actualización pero tienes el id del producto como salida. Igualmente, no conozco sqlserver y en mysql solo trabajo con parametros de entrada.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar