none
Consulta data grid view + sql server RRS feed

  • Pregunta

  • Hola! una consulta, cuando cargo esta venta en el datagridview:

    En la base de datos de sql server me la guarda asi:

    El codigo que tengo es este:

             

     public String RegistrarDetalleVenta()
            {
                bool rta = false;
                String sql = "INSERT INTO DetalleVenta (id_comida, id_venta, cantidad, precio,total) VALUES (@id_comida, @id_venta, @cantidad, @precio, @total)";
                using (SqlConnection cn = new SqlConnection("Data Source =.; Initial Catalog = PracticaSupervisada; Integrated Security = True"))
                   foreach (DataGridViewRow row1 in dataGridView3.Rows)

                    {
                        cn.Open();
                        SqlCommand cmd = new SqlCommand(sql, cn);
                        cmd.Parameters.AddWithValue("@id_comida", id_comida);
                        cmd.Parameters.AddWithValue("@id_venta", id_venta);
                        cmd.Parameters.AddWithValue("@cantidad", cantidad);
                        cmd.Parameters.AddWithValue("@precio", precio);
                        cmd.Parameters.AddWithValue("@total", total);

                        rta = (int)cmd.ExecuteNonQuery() > 0;
                        cn.Close();
                    }

                return "";
            }

    Tengo 2 errores... uno es que las ultimas dos filas no me deberia guardar... y otro es que me guarda el mismo dato del primer item del datagridview... se les ocurre cual es el tornillo a ajustar?? 

    A


    • Editado Eric_96 miércoles, 14 de abril de 2021 1:55
    miércoles, 14 de abril de 2021 1:51

Respuestas

  • Fíjate en esta línea y las otras similares que hay debajo de ella:

    cmd.Parameters.AddWithValue("@id_comida", id_comida);

    Observa que grabas el valor de la variable id_comida.

    Pero esa variable no se calcula dentro del bucle. Tiene que estar calculada en algún otro sitio fuera del código mostrada. Esto implica que en todas las iteraciones del bucle tiene el mismo valor. Por lo tanto, todas las líneas que se graban en la base de datos son iguales. Para poder grabar líneas distintas, tendrías que cambiar los valores que se graban en cada iteración del bucle que los graba.

    • Propuesto como respuesta EricRRModerator miércoles, 14 de abril de 2021 13:52
    • Marcado como respuesta EricRRModerator lunes, 26 de abril de 2021 14:21
    miércoles, 14 de abril de 2021 10:55
    Moderador

Todas las respuestas

  • Fíjate en esta línea y las otras similares que hay debajo de ella:

    cmd.Parameters.AddWithValue("@id_comida", id_comida);

    Observa que grabas el valor de la variable id_comida.

    Pero esa variable no se calcula dentro del bucle. Tiene que estar calculada en algún otro sitio fuera del código mostrada. Esto implica que en todas las iteraciones del bucle tiene el mismo valor. Por lo tanto, todas las líneas que se graban en la base de datos son iguales. Para poder grabar líneas distintas, tendrías que cambiar los valores que se graban en cada iteración del bucle que los graba.

    • Propuesto como respuesta EricRRModerator miércoles, 14 de abril de 2021 13:52
    • Marcado como respuesta EricRRModerator lunes, 26 de abril de 2021 14:21
    miércoles, 14 de abril de 2021 10:55
    Moderador
  • Hola Eric,

    ¿Alguna novedad sobre la consulta realizada?

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    • Propuesto como respuesta EricRRModerator miércoles, 14 de abril de 2021 13:52
    • Votado como útil EricRRModerator miércoles, 14 de abril de 2021 13:52
    miércoles, 14 de abril de 2021 13:51
    Moderador