Запрос LinqToSql в Crystal Report возвращает SystemNotSupportedException - PullRequest
0 голосов
/ 08 июня 2019

TO-SQL` запрос, который я использую для построения отчета Crystal:

 private void Arrivages()
    {
        using(DataClasses1DataContext dc=new DataClasses1DataContext())
        {
            var datas = (from art in dc.FICHES_ARTICLES
                         join ent in dc.ENTREES_STOCKS on art.ART_CODE equals ent.ART_CODE
                         where art.ART_SITE == 7 && art.ART_CODE == "A34815E1"
                         select new
                         {
                             art.ART_CODE,
                             art.ART_LIBELLE1,
                             art.ART_LIBELLE2,
                             //art.ART_EAN13,
                             art.ART_SIGNEQ,
                             ent.ENTSTK_LOT,
                             ent.ENTSTK_PNET,
                             ent.ENTSTK_DTENTREE,
                             ent.ENTSTK_NBU,
                             ent.ENTSTK_DATE_DEM,
                             ent.ENTSTK_USER
                         }).ToList();

            string reportPath = @"O:\GT\GT9999 - Applications\GL-T\Dossiers GL-T\Reports\Rapport1.rpt";
            ReportDocument cr = new ReportDocument();
            cr.Load(reportPath);
            cr.SetDataSource(datas);
            Cr_Viewer.ViewerCore.ReportSource = cr;
        }
    }

Но при запуске приложения появляется ошибка:

SystemNot SupportedException: Набор данных neprend pas en charge System.Nullable <>.

Английское сообщение

SystemNot SupportedException: DataSet не поддерживает System.Nullable <>

Error picture

Как мне избавиться от этой ошибки? Спасибо за помощь.

1 Ответ

0 голосов
/ 08 июня 2019

Поскольку вы написали, что поле: ENTSTK_DATE_DEM является нулевым, попробуйте заменить нулевое значение.Вы также можете преобразовать его в строку и сделать что-то вроде этого:

var datas = (from art in dc.FICHES_ARTICLES
    join ent in dc.ENTREES_STOCKS on art.ART_CODE equals ent.ART_CODE
    where art.ART_SITE == 7 && art.ART_CODE == "A34815E1"
    select new { art, ent }).ToList()
    {
         art.ART_CODE,
         art.ART_LIBELLE1,
         art.ART_LIBELLE2,
         art.ART_SIGNEQ,
         ent.ENTSTK_LOT,
         ent.ENTSTK_PNET,
         ent.ENTSTK_DTENTREE,
         ent.ENTSTK_NBU,
         ENTSTK_DATE_DEM = ent.ENTSTK_DATE_DEM.HasValue ? ent.ENTSTK_DATE_DEM.Value.ToString() : string.Empty,
         ent.ENTSTK_USER
       };

Не забудьте также преобразовать поле в строку в отчете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...