我在表(SQL Server 2008数据库)中有一个字段,类型为DateTime,此字段允许空值,最后包含一些空值以及一些实际值,但正如您可以从附加的图片,这些字段都没有显示(CR的作用就好像所有值都为空)。我已检查过用于填充报告的数据集,包含正确的数据,确实如此。我该如何解决这个问题?
private void RefreshReport(frmReportScreen showForm)
{
dsReports dsData = new dsReports();
rptDetailedReport rptDetailedReport = new rptDetailedReport();
try
{
DataTable dtPrintReport = clsSqlData.SqlFillDataTable(strSQL, 1);
if (dtPrintReport.Rows.Count > 0)
{
DataTableReader reader = new DataTableReader(dtPrintReport);
dsData.Tables["dtDetailReport"].Load(reader);
rptDetailedReport.SetDataSource(dsData);
rptDetailedReport.SetParameterValue(0, dateTimePicker1.Value);
rptDetailedReport.SetParameterValue(1, dateTimePicker2.Value);
showForm.crvReportViewer.ReportSource = rptDetailedReport;
}
}
catch (Exception ex)
{
MessageBox.Show("Error loading the report : " + ex.Message, "Error Loading Report", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
答案 0 :(得分:0)
SQL Server 2008 R2 CR 8.5
我遇到一个问题,即存储过程返回一个smalldatetime和两个datetime值,它们仅显示smalldatetime-其他显示为空白,但是经检查,实际上只是异常损坏(例如,年份为“ -471”) 。将这两个更改为smalldatetime可以完全解决此问题。
但是,还有一个奇怪的问题从未得到解释:在设计器中运行时,使用完全相同的RPT文件和数据库以及具有相同的用户凭据,这都不是问题。仅当从已将CR集成为COM对象的旧VB应用程序运行报表时,它才会破坏datetime值。我们无法更改该应用程序(2013年,一开始就过时了)。
我的解决方案(针对该应用的剩余时间)将是将日期作为预格式化的字符串返回,以避免使用此古老的软件出现任何其他日期数据类型问题。