none
Resultados de Tabla Detalle, vienen duplicados tantas veces como partidas tenga RRS feed

  • Pregunta

  • Tengo un proyecto en WPF en C#, con Modelo de Entidades, y estoy batallando, pues tengo una tabla de detalle de facturas, en la que para un folio de factura puedo traer una o más partidas, el caso es que cuando consulto para una factura que se que tiene 4 partidas por ejemplo, la lista de resultados me trae 4 registros, pero todos iguales a la primera partida ¿?

    lsFacturasDetalle = new List<FacturaDetalleCL>();
    
    var facturadetalleQuery = (from d in _context.FacturaDetalle
                        where d.NoFolioFactura == iNoFolioFactura
                        select d);
    
    facturadetalleQuery = facturadetalleQuery.OrderBy(b => b.Partida);
    
    foreach (var item in facturadetalleQuery.ToList())
    {
        lsFacturasDetalle.Add(new FacturaDetalleCL
        {
            Partida = item.Partida,
            Tipo = (int)item.Tipo,
            Codigo = item.Codigo,
            Descripcion = item.Descripcion,
            Unidad = item.Unidad,
            Cantidad = (float)item.Cantidad,
            PrecioUnitario = (decimal)item.PrecioUnitario,
            Importe = (decimal)item.Importe,
            ValorDescuento = (decimal)item.ValorDescuento,
            Subtotal = (decimal)item.SubTotal,
            Iva = (decimal)item.Iva,
            Total = (decimal)item.Total
        });
    }
    
    grdFacturasDetalle.ItemsSource = lsFacturasDetalle;
    

        si "debugueo" y consulto la lista de resultados de facturadetalleQuery, trae los 4 registros pero la información de cada uno es igual a la de la partida 1, no entiendo qué pasa, alguna idea?


    cyndyrdz

    miércoles, 25 de abril de 2018 17:21

Respuestas

  • Nunca entendí porqué no funcionó utilizando un query sobre el entity, incluso eliminé esa tabla del modelo de datos, compilé, volví a agregar la tabla al modelo, volví a ejecutar, y el problema seguía igual, así que tuve que cambiarlo, y ya funciona correctamente, anexo el código como quedó, incluyendo como estaba antes comentarizado:

    private void BuscarDetalle(int iNoFolioFactura)
    {
        try
        {
            lsFacturasDetalle = new List<FacturaDetalleCL>();
    
            SqlConnection conn = myConexion();
            string sql = "";
    
            sql = " Select * from FacturaDetalle Where FacturaDetalle.NoFolioFactura = " + iNoFolioFactura + " Order By FacturaDetalle.Partida ";
            SqlCommand comm = new SqlCommand(sql, conn);
    
            conn.Open();
    
            comm.CommandTimeout = 200;
            SqlDataReader sqlreader = comm.ExecuteReader();
    
            if (sqlreader.HasRows)
            {
                while (sqlreader.Read())
                {
                    lsFacturasDetalle.Add(new FacturaDetalleCL
                    {
                        Partida = (int)sqlreader["Partida"],
                        Tipo = (int)sqlreader["Tipo"],
                        Codigo = sqlreader["Codigo"].ToString(),
                        Descripcion = sqlreader["Descripcion"].ToString(),
                        Unidad = sqlreader["Unidad"].ToString(),
                        Cantidad = (float)((double)sqlreader["Cantidad"]),
                        PrecioUnitario = (decimal)sqlreader["PrecioUnitario"],
                        Importe = (decimal)sqlreader["Importe"],
                        ValorDescuento = (decimal)sqlreader["ValorDescuento"],
                        Subtotal = (decimal)sqlreader["Subtotal"],
                        Iva = (decimal)sqlreader["Iva"],
                        Total = (decimal)sqlreader["Total"]
                    });
                }
            }
    
            comm.Dispose();
            conn.Close();
                   
            // ESTE METODO POR ENTITY NO ESTA FUNCIONANDO CORRECTAMENTE
            //var facturadetalleQuery = (from d in _context.FacturaDetalle
            //                   where d.NoFolioFactura == iNoFolioFactura
            //                   select d);
    
            //facturadetalleQuery = facturadetalleQuery.OrderBy(b => b.Partida);
    
            //foreach (var item in facturadetalleQuery.ToList())
            //{
            //    lsFacturasDetalle.Add(new FacturaDetalleCL
            //    {
            //        Partida = item.Partida,
            //        Tipo = (int)item.Tipo,
            //        Codigo = item.Codigo,
            //        Descripcion = item.Descripcion,
            //        Unidad = item.Unidad,
            //        Cantidad = (float)item.Cantidad,
            //        PrecioUnitario = (decimal)item.PrecioUnitario,
            //        Importe = (decimal)item.Importe,
            //        ValorDescuento = (decimal)item.ValorDescuento,
            //        Subtotal = (decimal)item.SubTotal,
            //        Iva = (decimal)item.Iva,
            //        Total = (decimal)item.Total
            //    });
            //}
    
            grdFacturasDetalle.ItemsSource = lsFacturasDetalle;
        }
        catch (Exception ex)
        {
            Mensaje = new wMensaje("Error", ex.Message);
            Mensaje.ShowDialog();
        }
    }


    cyndyrdz

    jueves, 26 de abril de 2018 20:32

Todas las respuestas


  • cyndyrdz

    miércoles, 25 de abril de 2018 17:31

  • cyndyrdz

    miércoles, 25 de abril de 2018 17:31
  • Nunca entendí porqué no funcionó utilizando un query sobre el entity, incluso eliminé esa tabla del modelo de datos, compilé, volví a agregar la tabla al modelo, volví a ejecutar, y el problema seguía igual, así que tuve que cambiarlo, y ya funciona correctamente, anexo el código como quedó, incluyendo como estaba antes comentarizado:

    private void BuscarDetalle(int iNoFolioFactura)
    {
        try
        {
            lsFacturasDetalle = new List<FacturaDetalleCL>();
    
            SqlConnection conn = myConexion();
            string sql = "";
    
            sql = " Select * from FacturaDetalle Where FacturaDetalle.NoFolioFactura = " + iNoFolioFactura + " Order By FacturaDetalle.Partida ";
            SqlCommand comm = new SqlCommand(sql, conn);
    
            conn.Open();
    
            comm.CommandTimeout = 200;
            SqlDataReader sqlreader = comm.ExecuteReader();
    
            if (sqlreader.HasRows)
            {
                while (sqlreader.Read())
                {
                    lsFacturasDetalle.Add(new FacturaDetalleCL
                    {
                        Partida = (int)sqlreader["Partida"],
                        Tipo = (int)sqlreader["Tipo"],
                        Codigo = sqlreader["Codigo"].ToString(),
                        Descripcion = sqlreader["Descripcion"].ToString(),
                        Unidad = sqlreader["Unidad"].ToString(),
                        Cantidad = (float)((double)sqlreader["Cantidad"]),
                        PrecioUnitario = (decimal)sqlreader["PrecioUnitario"],
                        Importe = (decimal)sqlreader["Importe"],
                        ValorDescuento = (decimal)sqlreader["ValorDescuento"],
                        Subtotal = (decimal)sqlreader["Subtotal"],
                        Iva = (decimal)sqlreader["Iva"],
                        Total = (decimal)sqlreader["Total"]
                    });
                }
            }
    
            comm.Dispose();
            conn.Close();
                   
            // ESTE METODO POR ENTITY NO ESTA FUNCIONANDO CORRECTAMENTE
            //var facturadetalleQuery = (from d in _context.FacturaDetalle
            //                   where d.NoFolioFactura == iNoFolioFactura
            //                   select d);
    
            //facturadetalleQuery = facturadetalleQuery.OrderBy(b => b.Partida);
    
            //foreach (var item in facturadetalleQuery.ToList())
            //{
            //    lsFacturasDetalle.Add(new FacturaDetalleCL
            //    {
            //        Partida = item.Partida,
            //        Tipo = (int)item.Tipo,
            //        Codigo = item.Codigo,
            //        Descripcion = item.Descripcion,
            //        Unidad = item.Unidad,
            //        Cantidad = (float)item.Cantidad,
            //        PrecioUnitario = (decimal)item.PrecioUnitario,
            //        Importe = (decimal)item.Importe,
            //        ValorDescuento = (decimal)item.ValorDescuento,
            //        Subtotal = (decimal)item.SubTotal,
            //        Iva = (decimal)item.Iva,
            //        Total = (decimal)item.Total
            //    });
            //}
    
            grdFacturasDetalle.ItemsSource = lsFacturasDetalle;
        }
        catch (Exception ex)
        {
            Mensaje = new wMensaje("Error", ex.Message);
            Mensaje.ShowDialog();
        }
    }


    cyndyrdz

    jueves, 26 de abril de 2018 20:32