VC#.NET中使用水晶报表CrystalReportViewer时出现错误“未将对象引用设置到对象的实例” 100
我用的是VC#.NET2003,安装了CrystalReport10(有注册序列号),先在C盘建立了一个***.rpt文件,报表数据来自同目录下的***.xml文件,我的...
我用的是VC#.NET2003,安装了Crystal Report 10(有注册序列号),先在C盘建立了一个***.rpt文件,报表数据来自同目录下的***.xml文件,我的程序是
1.先将统计得到的数据存于这个xml文件中;
2.然后用水晶报表CrystalReportViewer显示rpt文件中的内容。
现在比较郁闷的是出现如下现象:
1.大部分情况下都能正常显示统计得到的结果(不出现错误);
2.偶尔不定时的会出现“未将对象引用设置到对象的实例”的错误对话框,一次会出现两三个对话框,对话框全部点掉后报表能显示,但数据是不对的(是设计报表时的原始数据),点“刷新”按钮后就能显示正确的数据;
3.执行程序后第一次统计时却基本不出现错误(第一次统计时显示报表往往很慢,也不知道是否跟这有关),此时程序不关闭,只关闭报表对话框,第二次重新统计时出现错误的可能性较多,当然此后重新统计就都会出现错误了。
4.程序关闭后重新启动上面1,2,3点的情况都可能出现。
在调试中发现是在执行this.crtViewer.ReportSource = "C:\\***.rpt"这句时出现的,我把"C:\\***.rpt"这句用字符串变量代替或者用ReportDocument先Load("C:\\***.rpt")后再赋给ReportSource也没有用。
谁能帮我解决这个问题,感激不尽啊!!相关代码如下:
private void FormCrystalReportViewer_Load(object sender, System.EventArgs e)
{
try
{
this.crtViewer.ReportSource = "C:\\***.rpt";
this.crtViewer.RefreshReport();
}
catch(Exception ex)
{
throw ex;
}
}
改new的地方都new了,如果没有new的话,怎么会有第一次统计的成功呢?
看来无人能回答,算是自己解决了,但是原因还是没有找到,我是这样解决的:
ReportDocument rptDoc = new ReportDocument();
try
{
rptDoc.Load(this.strRptFileName);
/*这一句偶尔会出现“未将对象引用设置到对象的实例”的异常,此异常不知如何排除,有一种情况是rpt报表被CrystalReport10打开过(但并没有修改报表文件)后就出现此异常,在这里我不抛出此异常,下面语句仍可正常执行,报表也正常显示。这样算是解决了,只是不知道原因何在。*/
}
catch{};
this.crtViewer.ReportSource = rptDoc;
this.crtViewer.RefreshReport();
还有最后4天,谁能解释一下,有希望得到分数哦! 展开
1.先将统计得到的数据存于这个xml文件中;
2.然后用水晶报表CrystalReportViewer显示rpt文件中的内容。
现在比较郁闷的是出现如下现象:
1.大部分情况下都能正常显示统计得到的结果(不出现错误);
2.偶尔不定时的会出现“未将对象引用设置到对象的实例”的错误对话框,一次会出现两三个对话框,对话框全部点掉后报表能显示,但数据是不对的(是设计报表时的原始数据),点“刷新”按钮后就能显示正确的数据;
3.执行程序后第一次统计时却基本不出现错误(第一次统计时显示报表往往很慢,也不知道是否跟这有关),此时程序不关闭,只关闭报表对话框,第二次重新统计时出现错误的可能性较多,当然此后重新统计就都会出现错误了。
4.程序关闭后重新启动上面1,2,3点的情况都可能出现。
在调试中发现是在执行this.crtViewer.ReportSource = "C:\\***.rpt"这句时出现的,我把"C:\\***.rpt"这句用字符串变量代替或者用ReportDocument先Load("C:\\***.rpt")后再赋给ReportSource也没有用。
谁能帮我解决这个问题,感激不尽啊!!相关代码如下:
private void FormCrystalReportViewer_Load(object sender, System.EventArgs e)
{
try
{
this.crtViewer.ReportSource = "C:\\***.rpt";
this.crtViewer.RefreshReport();
}
catch(Exception ex)
{
throw ex;
}
}
改new的地方都new了,如果没有new的话,怎么会有第一次统计的成功呢?
看来无人能回答,算是自己解决了,但是原因还是没有找到,我是这样解决的:
ReportDocument rptDoc = new ReportDocument();
try
{
rptDoc.Load(this.strRptFileName);
/*这一句偶尔会出现“未将对象引用设置到对象的实例”的异常,此异常不知如何排除,有一种情况是rpt报表被CrystalReport10打开过(但并没有修改报表文件)后就出现此异常,在这里我不抛出此异常,下面语句仍可正常执行,报表也正常显示。这样算是解决了,只是不知道原因何在。*/
}
catch{};
this.crtViewer.ReportSource = rptDoc;
this.crtViewer.RefreshReport();
还有最后4天,谁能解释一下,有希望得到分数哦! 展开
2个回答
展开全部
未将对象引用设置到对象的实例
就是你用了这个对象,,可是没有new 出来...
找找你什么没new 出来吧
就是你用了这个对象,,可是没有new 出来...
找找你什么没new 出来吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询