水晶报表无法及时更新数据? 我用VB把水晶报表直接连接SQL数据库,能显示出报表。但只有第一次打开的数据是正确的,第二次以后不管你要显示什么它都是显示你第一次显示的那些记录。更改了第一次的记录源,它还显示那此记录。我把“数据和报表一起保存”那些设置都设好了,也试着用report1.DiscardSavedData=True但提示不能给常量赋值?奇怪,该设的我都设了但就是不行。谁有没有办法?谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题我遇到过,记的每次关闭打印报表时关闭报表就可以了。解决记得给分呀!Private Sub DataReport_QueryClose(Cancel As Integer, CloseMode As Integer)DataReport.rsSQL_2.CloseEnd Sub 虽然这个问题已经过了很久,但是我想初学者都会遇到这样的问题,我也刚刚解决了这个问题。网上很多都说用代码改,但都说不清楚,很难懂,而我的方法很简单,不用改报表的参数,只需要添加一常见的控件,代码如下,希望我的回复会对个位有帮助:我用vb6.0 ,Crystal Reports 9,首先在vb工程中添加一个带有自动生成form1的Crystal Reports 9,其实那个form1里有一个CRViewer9控件,名为CRViewer91,用来显示表报的,然后设计好报表 接下来就更新数据的关键: 首先在form1添加一个timer控件,其名为timer1 ,如下编辑代码: 注意红色、部分dim time_count as intger ’定义一个循环变量 Dim Report As New CrystalReport1 ’生成水晶报表时已有的代码-----------------------------------------private sub form_load() time_count = 0 ' 循环变量 相当于 i Timer1.Enabled = True '必须使得他能用,负责不能工作 Timer1.Interval = 1000 '设置 timer 控件 开始运行时间/运行时间间隔 Screen.MousePointer = vbHourglass ’生成水晶报表时已有的代码 CRViewer91.ReportSource = Report CRViewer91.ViewReport Screen.MousePointer = vbDefaultEnd Sub------------------------------Private Sub Form_Resize() ’生成水晶报表时已有的代码CRViewer91.Top = 0CRViewer91.Left = 0CRViewer91.Height = ScaleHeightCRViewer91.Width = ScaleWidthEnd Sub----------------------------------Private Sub Timer1_Timer() 'timer 控件的具体操作 time_count = time_count + 1 If time_count < 2 Then [color=#0000FF]CRViewer91.Refresh '更新水晶报表 End If Timer1.Enabled = False '禁用timer 控件End Sub[/color]思路是:打开form1后,1-2秒内,进行一到两次CRViewer91.Refresh 操作,注意,1、但使用CRViewer91.Refresh 不用timer控件是不行了,我试过很多遍;2。Timer1.Interval 的设置要与报表的数据流量成正比,否则会出现未连接好数据就要更新的出错问题。其实代码可以更简单,看各位领悟。 再次感谢帮助我解决过问题的网友、网站和我自己~~ 如果是用DSR,请你在加载报表前先用Unload将其卸载如果是用RPT请在加载数据前用DiscardSavedData方法清空前一次的数据 datagrid显示多张数据表问题。 哪位有纬衡图档VHDrawings 4.0及使用说明,试用版就可以 提取硬盘物理序列号的问题。 给用VB写的OCX控件加属性问题 关于vb与asp的结合 用VB怎么实现数据结构中的链表,请知道的给个回复,谢谢! PCI-16P16R板卡在VB中的使用 怎摸在HTML中提取超级连接? vb6怎样和Access 2000连接?请帮我,谢谢! Netscape Communicator V5.0 是用什么编的?down浏览器的源代码 怎样用VB实现抓屏? VB删除文件夹问题
解决记得给分呀!
Private Sub DataReport_QueryClose(Cancel As Integer, CloseMode As Integer)DataReport.rsSQL_2.Close
End Sub
我用vb6.0 ,Crystal Reports 9,首先在vb工程中添加一个带有自动生成form1的Crystal Reports 9,其实那个form1里有一个CRViewer9控件,名为CRViewer91,用来显示表报的,然后设计好报表
接下来就更新数据的关键:
首先在form1添加一个timer控件,其名为timer1 ,如下编辑代码: 注意红色、部分dim time_count as intger ’定义一个循环变量
Dim Report As New CrystalReport1 ’生成水晶报表时已有的代码
-----------------------------------------
private sub form_load()
time_count = 0 ' 循环变量 相当于 i
Timer1.Enabled = True '必须使得他能用,负责不能工作
Timer1.Interval = 1000 '设置 timer 控件 开始运行时间/运行时间间隔
Screen.MousePointer = vbHourglass ’生成水晶报表时已有的代码
CRViewer91.ReportSource = Report
CRViewer91.ViewReport
Screen.MousePointer = vbDefault
End Sub
------------------------------
Private Sub Form_Resize() ’生成水晶报表时已有的代码
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidthEnd Sub
----------------------------------
Private Sub Timer1_Timer() 'timer 控件的具体操作
time_count = time_count + 1
If time_count < 2 Then
[color=#0000FF]CRViewer91.Refresh '更新水晶报表
End If
Timer1.Enabled = False '禁用timer 控件
End Sub[/color]
思路是:打开form1后,1-2秒内,进行一到两次CRViewer91.Refresh 操作,注意,1、但使用CRViewer91.Refresh 不用timer控件是不行了,我试过很多遍;2。Timer1.Interval 的设置要与报表的数据流量成正比,否则会出现未连接好数据就要更新的出错问题。其实代码可以更简单,看各位领悟。
再次感谢帮助我解决过问题的网友、网站和我自己~~
如果是用RPT请在加载数据前用DiscardSavedData方法清空前一次的数据