none
¿urgente ayudenme , me sale un errror en el datasource del crystal report ? RRS feed

  • Pregunta

  • buen dia amigos, vera tengo un problema con el datasource del crystal report .

    he creado un proyecto vacio en asp.net mvc, he creado la siguiete clase con las variables , propiedades y el metodo siguiente

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using ReporteconLinq.Models;
    namespace ReporteconLinq.Models
    {
        public class Datos_Reporte
        {
            private string _documento;

            public string Documento
            {
                get { return _documento; }
                set {  if (string.IsNullOrEmpty(value))
                    _documento = "ninguno";
                }
            }
            

            public DateTime Fecha { get; set; }
            private string _motivo;

            public string Motivo

            {
                get { return _motivo; }
                set
                {
                    if (string.IsNullOrEmpty(value))
                        _motivo = "ninguno";
                }
            }

            private string _producto;
            public string Producto
            {
                get{return _producto;}

                set
                {
                    if (string.IsNullOrEmpty(value))
                        _producto= "ninguno";
                }
            }
            private decimal? _precio;
            public decimal? Precio
            {
                get { return _precio; }

                set
                {
                    if (value == null)

                        _precio = 0.00m;
                }
            }

            private decimal? _galones;
            public decimal? Galones
            {
                get { return _galones; }
                set
                {
                    if (value == null)

                        _galones = 0.00m;
                }
            }
            private decimal? _saldo_anteriror;
            public decimal? Saldo_Anterior
            {
                get { return _saldo_anteriror; }
                set
                {
                    if (value == null)

                        _saldo_anteriror = 0.00m;
                }
            }

            private decimal? _retiro;
            public decimal? Retiro {
                get{return _retiro;}  
                set
                {if(value == null)
                
                 _retiro= 0.00m;
                }  }


            private decimal? _deposito;
            public decimal? Deposito
            {
                get { return _deposito; }
                set
                {
                    if (value == null)

                        _deposito = 0.00m;
                }
            }
            private decimal? _saldo_actual;
            public decimal? Saldo_Actual
            {
                get { return _saldo_actual; }
                set
                {
                    if (value == null)

                        _saldo_actual = 0.00m;
                }
            }

            private string _turno;
            public string Turno
            {
                get { return _turno; }
                set
                {
                    if (string.IsNullOrEmpty(value))
                        _turno = "ninguno";
                }
            }



            MydemoEntity ad = new MydemoEntity(); //
            public List<Datos_Reporte> Get_datos_sinnullos(int codigo=23)
            {
                var query = ad.Operaciones
                    .Where(r => r.Cod == codigo)
                    .OrderByDescending(r => r.Fecha)
                    .Select(r => new Datos_Reporte
                    {
                        Fecha = r.Fecha,
                        Documento= r.Doc,
                        Motivo = r.Motivo,
                        Producto = r.Prod,
                        Precio = r.Precio,
                        Galones = r.Galones,
                        Saldo_Anterior = r.Saldo_Anterior,
                        Retiro = r.Retiro,
                        Deposito = r.Depósito,
                        Saldo_Actual = r.Saldo_Actual,
                        Turno = r.Turno


                    });
                return query.ToList();
            
            }
        }
    }

    hice que en los set{} de mis variables tenga una condicional para que cuando al asignar los valores generados por mi linq a las variables estas tengan un valor por defecto cuando se le trate de asignar un valor nullo o vacio;

     a hora en mi Productcontroller tengo la siguiente ActionResult que es el que genera el reporte en base a un parametro,

    en el SetDataSource() del crystal report selecciono los campos mi lista  alamcenada dentro del query2 y las uso para llenar los campos de mi dataset que cree para poder usar en el crystalreport

      public ActionResult Index()
            {
      
                return View();
            }

    public ActionResult Export(int codigo=23)
            {
                Datos_Reporte re = new Datos_Reporte(); //accedo al metodo de mi clase para retornar la lista
                var query2 = re.Get_datos_sinnullos(codigo);//
                ReportDocument rd = new ReportDocument();
                rd.Load(Path.Combine(Server.MapPath("~/Report/CrystalReportProduct.rpt")));
                rd.SetDataSource(
                    query2.Select(p => new {

    //aca lleno los campos de mi dataset para mi crystal report;
                        Fecha = p.Fecha,
                        Turno = p.Turno,
                        Motivo = p.Motivo,
                        Saldo_anterior = p.Saldo_Anterior,
                        Deposito = p.Deposito,
                        Retiro = p.Retiro,
                        Saldo_actual = p.Saldo_Actual,
                        Documento = p.Documento,
                        Producto = p.Producto,
                        Precio = p.Precio,
                        Galones = p.Galones
                    
                    }).ToList() );
                Response.Buffer = false;
                Response.ClearContent();
                Response.ClearHeaders();
                Stream stream = rd.ExportToStream
                    (CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
                stream.Seek(0, SeekOrigin.Begin);
                return File(stream, "application/pdf", "listProducts.pdf");
                
                 }

    y en mi vista index.chtml el siguiente codigo

    @{
        ViewBag.Title = "Index";
    }

    <html>
    <head>
        <meta name="viewport"  content="width=device-width"/>
        <title>Index</title>
    </head>
    <body>
        <h3>list product</h3>
      <br /><br />
        <a href="@Url.Action("Export", "Product", new {codigo=23})">Exportar reporte</a>
    </body>
    </html>

    pero cuando hago click en el enlace para generar mi reporte este me vota un mensaje

    de:
    An exception of type 'System.NotSupportedException' occurred in System.Data.dll but was not handled in user code

    Additional information: DataSet no admite System.Nullable<>.

    por favor ayudenme para poder solucionar este problema ,ya que no se que hacer para solucionarlo.

    Muhcas gracias por su consejo o ayuda .





    • Editado kevin1520 lunes, 6 de julio de 2015 20:20
    lunes, 6 de julio de 2015 20:17