我程序里用了一个 DataEnviroment 和一个 DataReport,但是它对应的数据表的内容在程序运行时是经常更换的,我用 ADO 来处理的。可是我将表修改了以后,DataReport 中的数据还是老样子,有什么方法解决?

解决方案 »

  1.   

    用DataEnvironment1.rsCommand1.Resync 进行更新
      

  2.   

    同意。也可以讲report重新refresh。
      

  3.   

    请在显示报表代码前加这个试试:if DataEnvironment1.rsCommand1.adStateOpen then
       Dataenvironment1.rsCommand1.Close
    end if
      

  4.   

    或请在显示报表代码前加这个试试:if DataEnvironment1.rsCommand1.adStateOpen then
       Dataenvironment1.rsCommand1.Close
    end if
    Dataenvironment1.rsCommand1
      

  5.   

    也就是
    if DataEnvironment1.rsCommand1.adStateOpen then
       Dataenvironment1.rsCommand1.Close
    end if
    Dataenvironment1.rsCommand1DataReport1.Show
      

  6.   

    各位的方法我看了一下,我是这样改的:If DataEnv.rsGroupNo.State = adStateOpen Then
        DataEnv.rsGroupNo.Close
    End If
    DataEnv.rsGroupNo可是不行啊,DataEnv.rsGroupNo 这一句是不是错了?rsGroupNo 只是一个对象啊?VB 提示是属性使用无效。
      

  7.   

    我现在应急的解决方法就是,每次在显示报表时,重新建立一个新的 DataEnv 对象:Set MyDataEnv = New DataEnv
    Set MyReport.DataSource = MyDataEnv
    MyReport.Show vbModal但是总觉得这样不好,而且以后报表多了,数据环境也会很复杂,那样不是开销很大而且是不是太慢了?各位还有什么好方法吗?
      

  8.   


    那你可以把最后一行省去试试。if DataEnvironment1.rsCommand1.adStateOpen then
       Dataenvironment1.rsCommand1.Close
    end if我上面已经提到过了。
      

  9.   

    建议使用其它方式来作,比如使用HTML或Excel。这样可能自由更换数据且简单。
      

  10.   

    HTML 嵌在程序里觉得很不舒服,而且 Web 页在打印的时候是受浏览器控制的,通常状况下有什么页眉页脚,而且背景图片还不打印。
      

  11.   

    试试这个
    if DataEnvironment1.rsCommand1.adStateOpen then
       Dataenvironment1.rsCommand1.Close
    end ifDataEnvironment1.Command1应该没有问题。
      

  12.   

    我也碰到过类似情况,你可以在你的报表预览按钮中添加以下代码
     试一试吧
     Set DataEnviorment=Nothing
     Set DataReport1.DataSource= DataEnviorment
     DataReport1.PreviewPrint
      

  13.   

    真正可行的方法,亲自测试,呵。
    If DataEnvironment1.rsCA1.State = 1 Then
    'MsgBox (DataEnvironment1.rsCA1.State)
       DataEnvironment1.rsCA1.Close
    End IfDataEnvironment1.CA1
    DataReport1.Show注,我的command1 变成了CA1了,呵,你改一下就是。
    从 luosidao(螺丝刀) 的启发而来的,只是他的语句有错哦,呵。
      

  14.   

    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    sql="......"
    Set rst=cnn.Excute(sql)
    Set DataEnvironment1.rsCommand1.DataSource = rst
    Set DataReport.DataSource = DataEnvironment1
    DataReport.Show
      

  15.   

    简单的,
    unload DataEnvironment1
    DataReport1.Refresh
      

  16.   

    If DataEnvironment1.Connection1.State = adStateOpen Then DataEnvironment1.Connection1.Close
    DataEnvironment1.Connection1.Open
      

  17.   

    我看大家的解决方法差不多,估计问题在我这儿,而我现在软件的架构改了,不用 DataEnviorment 了。现在给分!