报表查看器#Error在表上

时间:2015-01-23 09:14:43

标签: c# reportviewer

enter image description here

您好。

有谁知道如何在我的报告中找到#error而不是数据的原因?该报告工作得很好,直到今天,我还没有对代码进行任何改动,现在我得到了#error的东西。我该如何调试它,看看它的原因在哪里?我调试了我的代码,我也没有例外。用于加载报告的代码是:

public static bool LoadSurveillanceDataInReport(ref ReportViewer rpt, DateTime dStart, DateTime dEnd, double kilometersDroven)
        {
            try
            {
                reportPath = @"C:\MSRDS4\bin\Reports\SurveillanceReport.rdlc";
                pdfName = "Surveillance_Report_" + dStart.ToShortDateString().Replace('/', '_').Replace('-', '_');

                bool hasDetections = false;
                bool hasTaken = false;

                //Get Surveillance data
                IList<ClsSurveillanceTasks> surveillanceTasks = GetTaskData(dStart.Date.ToString("yyyy-MM-dd"), dEnd.Date.ToString("yyyy-MM-dd"));
                if (surveillanceTasks == null)
                    return false;
                else if (surveillanceTasks.Count > 0)
                    hasTaken = true;


                IList<ClsSurveillanceDetections> surveillanceDetection = GetDetectionData(dStart.Date.ToString("yyyy-MM-dd"), dEnd.Date.ToString("yyyy-MM-dd"));
                if (surveillanceDetection == null)
                    return false;
                else if (surveillanceDetection.Count > 0)
                    hasDetections = true;

                IList<ClsSurveillanceRobotStatus> surveillanceRobotStatus = GetRobotStatusData(dStart.Date.ToString("yyyy-MM-dd"), dEnd.Date.ToString("yyyy-MM-dd"), kilometersDroven);
                if (surveillanceRobotStatus == null)
                    return false;

                //reset report
                rpt.Reset();
                rpt.LocalReport.DataSources.Clear();

                //set dataset
                var rDSTasks = new ReportDataSource { Value = surveillanceTasks, Name = "dsTasks" };
                rpt.LocalReport.DataSources.Add(rDSTasks);

                var rDSDetections = new ReportDataSource { Value = surveillanceDetection, Name = "dsDetections" };
                rpt.LocalReport.DataSources.Add(rDSDetections);

                var rDSRobotStatus = new ReportDataSource { Value = surveillanceRobotStatus, Name = "dsRobotStatus" };
                rpt.LocalReport.DataSources.Add(rDSRobotStatus);

                //Set report path
                rpt.LocalReport.ReportPath = reportPath;

                //Parameters
                var reportDate = dStart.Date;
                var monthName = new DateTime(reportDate.Date.Year, reportDate.Date.Month, reportDate.Date.Day).ToString("MMM", System.Globalization.CultureInfo.InvariantCulture);

                var formatedDate = reportDate.Date.Day + " " + monthName + " " + reportDate.Date.Year;
                var rptParams = new ReportParameter[] { 
                new ReportParameter("nowDate", formatedDate),
                new ReportParameter("Company", company), 
                new ReportParameter("Adres", adres), 
                new ReportParameter("Postcode", postcode), 
                new ReportParameter("Place", place), 
                new ReportParameter("hasDetections", hasDetections.ToString()), 
                new ReportParameter("hasTaken", hasTaken.ToString())
                };

                rpt.LocalReport.SetParameters(rptParams);

                try
                {
                    //Set page Settings to prevent big margins
                    var pg = new System.Drawing.Printing.PageSettings
                    {
                        Margins = { Top = 16, Bottom = 16, Left = 16, Right = 16 }
                    };

                    rpt.SetPageSettings(pg);
                }
                catch (Exception ex)
                {
                    LogHandler(ex);
                }

                return true;
            }
            catch (Exception ex)
            {
                LogHandler(ex);
                return false;
            }
        }

GetTaskData返回数据,其中没有空值。

任何帮助将不胜感激!谢谢

2 个答案:

答案 0 :(得分:0)

这是一个RDLC错误本身。它试图解析你的约会,但它没有这样做。这是由您尝试在报告中打印的错误日期引起的。 您可以使用多个日期对此进行调试。

首先在.NET消息中打印formatedDate(或使用.net调试器检索它)。同时从报告中的日期字段中删除任何格式。只需将变量转储到报告中即可。格式错误可能是问题所在。

除此之外,调试rdlc很烦人。如果您没有想法,则应该查看xml-dataset,看看您实际将数据推送到报告的方式。

答案 1 :(得分:0)

拜托,这对我来说很难理解..所以我解决了这个问题,我通过删除数据集并将其重新添加到我的报告中来修复它,所以基本上我删除了数据集并添加了相同的数据集现在它正在运作..