0

我在表(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);
        }
    }
4

1 回答 1

0

SQL Server 2008 R2 CR 8.5

我遇到了一个 sproc 返回一个 smalldatetime 和两个 datetime 值的问题,它将只显示 smalldatetime - 其他的显示为空白,但经过检查,实际上只是令人难以置信的损坏(例如,年份是“-471”)。将这两个更改为 smalldatetime 完全解决了这个问题。

然而,还有一个从未解释过的奇怪之处:在设计器中运行时,这些都不是问题,进入完全相同的 RPT 文件和数据库,并使用相同的用户凭据。仅当从将 CR 集成为 COM 对象的旧 VB 应用程序运行报告时,它才会损坏日期时间值。我们无法更改应用程序(2013 年,从一开始就过时了)。

我的未来解决方案(对于这个应用程序的剩余时间)将返回日期作为预先格式化的字符串,以避免使用这个古老的软件出现任何进一步的日期数据类型问题。

于 2019-03-14T17:44:17.540 回答