我用DataReport+DataEnvironment设计报表,已经完成。但有一个问题。就是每次打开报表的速度不太一样。有时候很快报表就出来了,有时候很慢。不知道怎么回事。请指点一下。谢谢。

解决方案 »

  1.   

    我的心得:http://topic.csdn.net/u/20070930/15/1e2013c3-d5c7-403b-9998-548ded070968.html
      

  2.   

    好象看过MSDN,,一般情况下rpt关闭后会自动释放报表对象。 
    我想你的情况可能是二个,一是用了DE,不过这个只是推测,因为没有用过这个,或者是用法上有问题。二是你是在窗体相关事件中设置和绑定报表数据源的,个人认为更恰当的用法应该是放在DataReport_Initialize事件中。个人看法,不一定正确,只供参考。原因找到了,灵感来自“vbman2003 ”的赋值! 
    处理办法:原来报表窗体中的DataSource选中的是“DE”,现在去掉,改用赋值的方法:Set myRpt.DataSource = DE。测试结果:内存再也没递增了,而且查询出报表速度奇快!你的帖子我看到了。我也是将报表窗体中的DataSource选中的是“DE”,现在也改用set在DataReport_Initialize来赋值了。那还想问问,报表中的相关text和报表的DataMember我现在也是绑定的,需要改吗?
      

  3.   

    不用改的,DE重新赋值就够了。
       Set DE = Nothing
                DE.CT.ConnectionString = strCnn
                DE.Commands("gas_money_public").CommandText = "SELECT * FROM moneypublic WHERE gasuser_id is not null " & strDWMC & strBZT & strYHBM & strYHXM & strRQ & strJKFS & strYHHAO & strYHNam & strLX & strYH & strUser & strSLBM & strPX
                    Set drpGas_Public_Money.DataSource = DE
                    strDRPName = "管道燃气抄度报表" & Rep_pay
      

  4.   

    下面是我窗体中给报表连接赋值和统计的过程
    Private Sub Command3_Click()  '报表打印
        Dim Sqlstr As String  '数据库连接字符串
        Dim Chaxun As String Set DataEnvironment1 = Nothing
     Set DataRptSfjdbao = Nothing'连接字符串
        DataEnvironment1.Connection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Database\" & Dataname & ";Persist Security Info=False"
            If Combo2.Text = "按日查询" Then
                If Combo1.Text = "日常监督" Then
                    DataEnvironment1.Commands.Item("Rsrptsfjd").CommandText = "select * from expwy where riqi=" & Chaxun & " " & "order by begintime"
                    DataRptSfjdbao.Show 1
            end If
    End Sub下面是报表窗体中的过程:
    Private Sub DataReport_Initialize()
        Set DataRptSfjdbao.DataSource = DataEnvironment1
    End SubPrivate Sub DataReport_QueryClose(Cancel As Integer, CloseMode As Integer)
        DataEnvironment1.rsRsrptsfjd.Close
        Set rsRsrptsfjd = Nothing
    End Sub这样可以了吗?有问题吗?