您好。
有谁知道如何在我的报告中找到#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返回数据,其中没有空值。
任何帮助将不胜感激!谢谢
答案 0 :(得分:0)
这是一个RDLC错误本身。它试图解析你的约会,但它没有这样做。这是由您尝试在报告中打印的错误日期引起的。 您可以使用多个日期对此进行调试。
首先在.NET消息中打印formatedDate
(或使用.net调试器检索它)。同时从报告中的日期字段中删除任何格式。只需将变量转储到报告中即可。格式错误可能是问题所在。
除此之外,调试rdlc很烦人。如果您没有想法,则应该查看xml-dataset,看看您实际将数据推送到报告的方式。
答案 1 :(得分:0)
拜托,这对我来说很难理解..所以我解决了这个问题,我通过删除数据集并将其重新添加到我的报告中来修复它,所以基本上我删除了数据集并添加了相同的数据集现在它正在运作..