软件注册站
热情软件屋

 
DataReport的内容不随数据库的内容变化
编号: QA001874    
建立日期: 1999年10月19日 最后修改日期: 2003年12月14日
所属类别: Visual Basic - 打印与报表
   
    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

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio