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天,谁能解释一下,有希望得到分数哦!
展开
 我来答
Lq_7777
2008-10-06 · TA获得超过173个赞
知道答主
回答量:448
采纳率:0%
帮助的人:0
展开全部
未将对象引用设置到对象的实例

就是你用了这个对象,,可是没有new 出来...
找找你什么没new 出来吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
llsenzzuli
2008-10-20 · TA获得超过3861个赞
知道小有建树答主
回答量:960
采纳率:0%
帮助的人:619万
展开全部
this.crtViewer.RefreshReport();
去掉类似于这样的一句话
就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式