 |
vb6.0
Pwin98
在使用DataReport时,我通过DataEnvironment连接了一个临时数据库,该数据库中的数据根据查询条件的不同而变化,但是每次执行程序,当我改变查询条件时,临时数据库内容变化了,而报表的内容不变,要退出程序才行。经反复测试,发现每次报表的内容是程序启动前的临时数据库内容,请问专家这个问题应该如何解决?谢谢。(孙伟)
|
| |
|
 |
Requery方法!
也可以直接使用ADODB.Recordset!不使用DataEnvironment!例:
...
public adoRecordsetX as ADODB.Recordset
...
Private Sub DataReport_Initialize()
adoRecordsetX.Requery
Set DataReport1.DataSource = adoRecordsetX '设置 DataReport 的数据源
...
'绑定某字段
Me.Sections.Item("Section1").Controls.Item("text1").DataField=adoRecordsetX.Fields.Item(0).Name
...
End Sub
风魔的意见:
这几天我也是为这个问题而烦恼!直到今天早上,我无意中想到把数据环境也跟报表一样Unload 一下,没想到真的可行!
DataReport3.Caption = Ipt & "用户费用"
DataReport3.Title = Ipt & "用户费用"
DataReport3.Show vbModal, Me
Unload DataReport3
Unload DataEnvironment1
lzy40的意见:
我赞同风魔的意见,是不是这样更好些:
在dataReport设计器代码中加入:
Private Sub DataReport_QueryClose(Cancel As Integer, CloseMode As Integer)
Unload DataReport1
Unload DataEnvironment1
End Sub
wuxiaoqiang的意见:
在你们有关上述问题的回答,我想再增加一种更简单的解决办法。
1.在datareport 报表中设置datamember和datasource为空。
2.将以前绑定的RptTextBox的datamember设为空,保留原来的datafield.
3.在打印操作中增加以下代码:
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" + App.path + "\finance.mdb" + ";"
Set tb = New Recordset
tb.Open "select * from dailyfeeprint", db, adOpenStatic, adLockOptimistic
With tb
.AddNew
![工号] = Combo1(0).Text
![姓名] = txtFields(0).Text
![交费日期] = txtFields(1).Text
.........
.Update
End With
Set data1.Recordset = tb
Set datareport1.DataSource = data1
datareport1.Show
datareport1.PrintReport
其实这个问题也搞得我很头疼,希望能让其他人不再头疼。
herycom的意见:
直接Requery 一下就可以了。
Private Sub DataReport_Initialize()
DataEnvironment1.rsCommand1.Requery
End Sub
spencer yang的意见:
具体范例,请到纪文和网站 VB入门网
http://www.vbguide.com.tw/webback.asp
看看「个个击破」 单元中的
---------------------------------------
277 如何更新 DataReport 里的资料?
---------------------------------------
数字女孩的意见:
以上方法还需补充一下
1 对DataEnvironment的datamember的属性设置为空。
2 对datareport报表中的rpttext控件的datasouce和recordset重新进行绑定(需要在报表初始化事件中用代码实现)
相关问题:
QA002102 "当数据集变化时,更新VB 6.0的DataGrid控件"
QA004178 "当使用DataEnvironment时,显示更新的列表框"
ioned的意见:
可以直接当作ado的数据集进行操作
DaEnvxkhd.Recordsets.Item(i).Source = "select * from xkhdxsl where x_year=" + Cmbnian.Text
DaEnvxkhd.Recordsets.Item(i).Open
DRepxkhd.Show vbModal
DaEnvxkhd.Recordsets.Item(i).CloseDaEnvxkhd.Recordsets.Item(i).Source = "select * from xkhdxsl where x_year=" + Cmbnian.Text
DaEnvxkhd.Recordsets.Item(i).Open
DRepxkhd.Show vbModal
DaEnvxkhd.Recordsets.Item(i).Close
luosheng的意见:
只要将运行的表单卸载再重载即可刷新报表数据。
T1289的意见:
其实这个问题的主要原因是记录集没有自动刷新方法就是将DataEnvironment的记录集rscommand先关掉,然后重新执行一下command就行了。
此问题由于溪玥回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 打印与报表, print, report crystal report, active report。
|
| |
|
| |
|
| |
|
|