我有一个我正在处理的项目,它从 MySQL 数据库中提取数据,我读取数据并进行一些计算以用于显示图表和图形,最后将计算出的信息编译成从生成的 PDF 报告中报告查看器。该报告运行良好,所以我想我会测试对数据库进行更改。
一个表中有一个名为“name”的字段,它的类型是 NVAR CHAR(MAX)。为了适应这种类型,我读取了“名称”并使用以下方法将其转换为字符串:
Convert.ToString(reader[2]); //reader is the object retrieved from the SQL query
如前所述,在我更改一个表中的“名称”字段之前,这可以正常工作。我已将它从诸如“2323”或“1”(注意空格,仍然有效)之类的数字字符串更改为诸如“TEST”、“TEST RUN”和“TEST”之类的任意字符串(注意空格)。在我进行此更改之前,该程序不会抱怨,此时我收到以下错误:
Warning: Warnings occurred while executing the subreport "Subreport 1".(rsWarningExecutingSubreport)
Warning: An error occurred while executing the subreport "Subreport 1" Instance: 323iT4R0x0S0): Data retrieval failed for the subreport, 'Subreport 1', located at: MyCompanyReports.Reports.Measurement.rdlc. Please check the log files for more information. (rsErrorExecutingSubreport)
我已经搜索了这个错误并注意到以下行的顺序错误并且问题,我认为我的顺序正确,因为我已经成功地使用此配置创建了报告:
reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
this.reportViewer1.RefreshReport();
有哪些可能出错的事情会导致此问题?我无计可施。
如果需要,我会发布我可以发布的代码。
谢谢
编辑:为澄清起见,报告正在呈现为 PDF 文件。PDF 仍然生成,但我得到的不是我的图表/图形,而是错误字符串。错误直接发生在此行之后:
renderedBytes = this.reportViewer1.LocalReport.Render(reportype, devinfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);