DateTime字段未显示在Crystal Report中(来自SQL Server)

时间:2013-02-20 07:37:09

标签: c# crystal-reports

我在表(SQL Server 2008数据库)中有一个字段,类型为DateTime,此字段允许空值,最后包含一些空值以及一些实际值,但正如您可以从附加的图片,这些字段都没有显示(CR的作用就好像所有值都为空)。我已检查过用于填充报告的数据集,包含正确的数据,确实如此。我该如何解决这个问题?Preview of generated report

Preview of report design

    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);
        }
    }

1 个答案:

答案 0 :(得分:0)

SQL Server 2008 R2 CR 8.5

我遇到一个问题,即存储过程返回一个smalldatetime和两个datetime值,它们仅显示smalldatetime-其他显示为空白,但是经检查,实际上只是异常损坏(例如,年份为“ -471”) 。将这两个更改为smalldatetime可以完全解决此问题。

但是,还有一个奇怪的问题从未得到解释:在设计器中运行时,使用完全相同的RPT文件和数据库以及具有相同的用户凭据,这都不是问题。仅当从已将CR集成为COM对象的旧VB应用程序运行报表时,它才会破坏datetime值。我们无法更改该应用程序(2013年,一开始就过时了)。

我的解决方案(针对该应用的剩余时间)将是将日期作为预格式化的字符串返回,以避免使用此古老的软件出现任何其他日期数据类型问题。