问题描述
有一个添加样品检验的需求,注册一个样品,然后填写检验报告单,生成检验报告(水晶报表)现在生成检验报告我是从检验报告数据库(包含刚填写的样品检验报告单信息)中提取的某种样品id数最大的信息,这样就是获得的最后添加的这个报告,绑定水晶报表第一个样品a添加检验报告单,绑定,OK,水晶报表出来了,没问题换一个样品b添加检验报告单,绑定,OK,水晶报表也出来了,没问题在添加一个样品a的检验报告单,绑定,这次就不OK了,水晶报表也出来了,不过现实的不是最后我添加的这条,而是第一次添加的样品a的信息后面无论添加多少个a,都是出来第一个的检验报告单b也如此,只要是之前数据库中有添加数据,他就不显示最新的于是我就把一个datagridview放到窗体里面,看看到底提取出来什么数据,这时候出来一个可笑的事情,datagirdview和水晶报表绑定的是同一个dataset的同一个table的同一个row,结果datagridveiw上面显示的是最新的,可是水晶报表显示的是最老的,这是怎么回事?莫非水晶报表还有session一样的功能?能够缓冲数据?我又在每次crystalreportviewer的load事件里面,让水晶报表的数据源为空,结果还是不行谁能帮帮忙阿,这是什么原因阿,愁死了,项目就这么一点,死活就卡这里了
解决方案
解决方案二:
我用的是winform
解决方案三:
上去
解决方案四:
调试一下看看从数据库取出来的到底和显示的是不是同一条记录
解决方案五:
不是一条数据,我断点调试运行出来的数据和我让datagridview上面显示的数据是一致的,但是水晶报表就和这个不一样,可是他们都是使用的相同的sql语句
解决方案六:
拿点代码出来瞧瞧!可能是你水晶报表做的方式不对吧!
解决方案七:
privatevoidcrystalReportViewer1_Load(objectsender,EventArgse){DataSetpud=newDataSet();Stringstr=Path.GetFullPath("Crystalnew.rpt");this.crystalnew1.Load(str);Bussiness.HandleExamplehe=newfood.Bussiness.HandleExample();pud=he.ShowCheckReport(SampName,FacName);DataSet_pud=he.ShowCheckReport(SampName,FacName);crystalnew1.SetDataSource(pud.Tables[0]);this.crystalReportViewer1.ReportSource=crystalnew1;this.data.DataSource=pud.Tables[0];}
这个是绑定水晶报表绑定数据并且和水晶报表查看器关联的那部分语句
解决方案八:
水晶报表上面直接扔的数据库字段
解决方案九:
朋友们谁帮忙看看阿
解决方案十:
privatevoidcrystalReportViewer1_Load(objectsender,EventArgse){DataSetpud=newDataSet();Stringstr=Path.GetFullPath("Crystalnew.rpt");this.crystalnew1.Load(str);Bussiness.HandleExamplehe=newfood.Bussiness.HandleExample();pud=he.ShowCheckReport(SampName,FacName);DataSet_pud=he.ShowCheckReport(SampName,FacName);//这个地方填写类似这样的代码//crystalnew1.DataSource.Clear();//就是把他的datasource清空crystalnew1.SetDataSource(pud.Tables[0]);this.crystalReportViewer1.ReportSource=crystalnew1;this.data.DataSource=pud.Tables[0];}由于我机器上没有水晶报表,我不知道那里具体应该怎么写,但应该是那块的问题
解决方案十一:
楼上的朋友我看了你的代码了,不过crystalnew1没有.datasource的属性,后来我+了一条crystalnew1.DataSourceConnections.Clear();但是还是不行,谁能帮帮再看看呢,谢谢了
解决方案十二:
来大大阿,受不了了
解决方案十三:
100分,谁能拿走都拿走吧,不行我再开个帖子给您100分,就差这么点了,哪位大大给我个支持阿
解决方案十四:
不是水晶报表的问题,是你取数据的问题.调试下就应该很明白了.
解决方案十五:
我又调试了一次,没问题数据,数据库提取出来的dataset就是最新的数据,可是在水晶报表里面显示的就是最老的,无奈了
解决方案:
咱这得高人呢?怎么都不来我这个帖子,莫非都不用水晶报表么?
解决方案:
帅哥,你这个需要调用报表的一个刷新的方法,Refresh
解决方案:
好像一直有这个问题,不想GridView一样,Bind一下就好了。。
解决方案:
回复16楼的帅哥,我不论是privatevoidcrystalReportViewer1_Load(objectsender,EventArgse){DataSetpud=newDataSet();Stringstr=Path.GetFullPath("Crystalnew.rpt");this.crystalnew1.Load(str);Bussiness.HandleExamplehe=newfood.Bussiness.HandleExample();pud=he.ShowCheckReport(SampName,FacName);DataSet_pud=he.ShowCheckReport(SampName,FacName);crystalnew1.SetDataSource(pud.Tables[0]);crystalnew1.Refresh();this.crystalReportViewer1.ReportSource=crystalnew1;this.data.DataSource=pud.Tables[0];}
还是privatevoidcrystalReportViewer1_Load(objectsender,EventArgse){DataSetpud=newDataSet();Stringstr=Path.GetFullPath("Crystalnew.rpt");this.crystalnew1.Load(str);crystalnew1.Refresh();Bussiness.HandleExamplehe=newfood.Bussiness.HandleExample();pud=he.ShowCheckReport(SampName,FacName);DataSet_pud=he.ShowCheckReport(SampName,FacName);crystalnew1.SetDataSource(pud.Tables[0]);this.crystalReportViewer1.ReportSource=crystalnew1;this.data.DataSource=pud.Tables[0];}
还是[code=C#]privatevoidcrystalReportViewer1_Load(objectsender,EventArgse){crystalReportViewer1.Refresh();DataSetpud=newDataSet();Stringstr=Path.GetFullPath("Crystalnew.rpt");this.crystalnew1.Load(str);Bussiness.HandleExamplehe=newfood.Bussiness.HandleExample();pud=he.ShowCheckReport(SampName,FacName);DataSet_pud=he.ShowCheckReport(SampName,FacName);crystalnew1.SetDataSource(pud.Tables[0]);this.crystalReportViewer1.ReportSource=crystalnew1;this.data.DataSource=pud.Tables[0];}
都是一个结果,不行,仍然在显示最老的记录
解决方案:
还有,这个水晶报表没有DataBinding
解决方案:
该回复于2008-05-11 11:50:06被版主删除
解决方案:
我手头上没有现成的代码,忘了是Report的Refresh还是ReportViewer的Refresh了。你的问题我遇到过,解决方法就是需要Refresh
解决方案:
求20楼的以后少来我帖子里面发广告
解决方案:
先去吃饭,看看下午有什么方法没有还有菜菜朋友,这两个refresh我都试了,貌似不管用,下午我再看看,还是不行的话,我把代码发给你一部分,你给看看如何
解决方案:
引用21楼caicai_45的回复:
我手头上没有现成的代码,忘了是Report的Refresh还是ReportViewer的Refresh了。你的问题我遇到过,解决方法就是需要Refresh
解决方案:
想起来了,你把代码这样改下,privatevoidcrystalReportViewer1_Load(objectsender,EventArgse){//crystalnew1的申明和初始化都放到这个地方,不是From级别的变量,作为方法变量crystalReportViewer1.Refresh();DataSetpud=newDataSet();Stringstr=Path.GetFullPath("Crystalnew.rpt");crystalnew1.Load(str);Bussiness.HandleExamplehe=newfood.Bussiness.HandleExample();pud=he.ShowCheckReport(SampName,FacName);DataSet_pud=he.ShowCheckReport(SampName,FacName);crystalnew1.SetDataSource(pud.Tables[0]);this.crystalReportViewer1.ReportSource=crystalnew1;this.data.DataSource=pud.Tables[0];crystalReportViewer1.Refresh();//这两个同样的方法,你看看能不能去掉一个}
解决方案:
privatevoidcrystalReportViewer1_Load(objectsender,EventArgse){DataSetpud=newDataSet();Stringstr=Path.GetFullPath("Crystalnew.rpt");this.crystalnew1.Load(str);Bussiness.HandleExamplehe=newfood.Bussiness.HandleExample();pud=he.ShowCheckReport(SampName,FacName);DataSet_pud=he.ShowCheckReport(SampName,FacName);crystalnew1.Refresh();//加上这句就好了crystalnew1.SetDataSource(pud.Tables[0]);this.crystalReportViewer1.ReportSource=crystalnew1;this.data.DataSource=pud.Tables[0];}
解决方案:
该回复于2014-10-04 09:59:19被版主删除
解决方案:
是不是这个Load方法有问题this.crystalnew1.Load(str);