我使用vb调用水晶报表9.0时,打开预览时出现没有记录的报表,点击刷新按钮执行一次就可以把要查找的记录显示出现,经过不断的测试和查找问题得以解决,在填充记录集合前使用DiscardSavedData方式释放掉水晶报表应用中缓存的数据即可
'清除报表中保持的数据
一下为一位网友的遇到问题的解决方法类似:
我所使用的水晶报表是VS2005中内嵌的(水晶报表10),在运行报表过程中出现总是显示以前数据或布局样式,不能更新的问题.
网上提供的解决方案如下:
"许多朋友在使用水晶报表编程时,遇到了这么个小难题
报表第一次加载的时候正确显示,但是在条件更换后,报表内容却没有及时更新.
虽然在Crviewer上已经使用了Refresh方法
其实VB中只要简单在填充记录集合前使用DiscardSavedData方式释放掉水晶报表应用中缓存的数据即可
'清除报表中保持的数据
objCRReport.DiscardSavedData
'赋给报表数据
objCRReport.Database.SetDataSource rst VSNet2003附带的水晶报表版本中没有DiscardSavedData方法,
我自己用的时候没有出现过数据不刷新的情况,所以没有直接做个测试
但是可以在应该在界面重载的时候,做一次
objReportDocument.Dispose()另外在制作模板的时候,保存时不要选择将数据与报表一起保存
如果已经选择了,把"文件"-->"报表选项"里的这个项目点掉
"
但是按照以上的方法不能解决我的问题,运行报表后显示的仍是上次的结果,后来发现每次运行报表(或预览)在
C:\Documents and Settings\Administrator\Local Settings\Temp
文件夹中会生成*.rpt的报表临时文件,删除这些文件后发现问题解决,其中具体原因不是很清楚,不明白为什么水晶报表每次运行会先查找这些文件.
(注:报表中存在大量数据时,运行预览*.rpt容量也会很大,预览结果和实际显示结果布局位置上会有所不同,所以每次检查结果我都是执行程序.)
网上还有种说法:
VS.NET2003自帶的水晶9每次執行時舊的temp會自動清除,重啟IIS會全部清除
而VS2005自帶的水晶10就不行了,TEMP不會自動清除,重啟IIS也還在
如果有哪位大虾能提出VS2005水晶报表10刷新问题的更好解决方案,非常感谢!
(PS:报表界面或内容更改时,一定要重新生成解决方案,对于不能刷新的问题就会迎刃而解!!!)