我使用的是VB内带的空间来打印物资清单的,第一次运行打印窗体里的打印按钮可以正常使用,但是,当将此窗体关闭再打开的时候,点击打印按钮就出现了如题的错误。
   我查了下,好像是因为环境关闭了,再打开不是同一个,具体的也没说清楚,我也没弄懂。。
欢迎了解的不吝赐教!!(如果变动不是很大最好,小弟对报表还不是很熟悉,希望大侠详细讲解,我也只有以高分回报了)
以下是我的代码:Private Sub butprint_Click()   '打印物资清单         DataEnvironment1.Connection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\data\laobao.mdb;Persist Security Info=False"         DataEnvironment1.Connection1.Open
        
         If DataEnvironment1.rsCommand1.State <> adStateClosed Then
            DataEnvironment1.rsCommand1.Close
            
         End If
                
        DataEnvironment1.rsCommand1.Open "select * from admin"
        Set presult.DataSource = DataEnvironment1   'presult是我用VB里DATAREPORT做的报表格式
        presult.DataMember = "Command1"'以下为报表里我设置的LABEL控件,具体的值是我传递过去的字符串        presult.Sections(3).Controls("content").Width = 6000
        presult.Sections(3).Controls("content").Height = 5500         
        presult.Sections(3).Controls("ppname").Caption = pname
        presult.Sections(3).Controls("ppid").Caption = pid
        presult.Sections(3).Controls("ppdanwei").Caption = pdanwei
        presult.Sections(3).Controls("ppwtype").Caption = pwtype
        presult.Sections(3).Controls("pptime").Caption = ptime
        presult.Sections(3).Controls("content").Caption = printresult
        presult.Show
   
    
End Sub

解决方案 »

  1.   

    代码最后要加上
    DataEnvironment1.Connection1.close
    估计是连接没有关闭,再次打开连接时报错的问题
      

  2.   

    function prtFun()Dim pr
    Dim datacmd As New Command
    Dim strsql As String
    Dim controlx As Object
    Dim fieldcount As Integer
    Dim dfsco As String
    Dim temans As Integer
    Dim k As Integer
    fieldcount = 0
    k = 1
    Set datacmd = Nothing
    Set datacmd = New CommandWith datacmd
        .ActiveConnection = DataConn
        .CommandType = adCmdText
        .CommandText = " select * from otistem"
        .Execute
        
    End With
    With DataRec
        .ActiveConnection = DataConn
        .CursorLocation = adUseClient
        .Open datacmd
    End With
    With Otis.Sections.Item("section2").Controls.Item("label1").Caption = Trim(" " & DataRec.Fields("出货日期"))
    .Sections.Item("section2").Controls.Item("label47").Caption = Trim(txtshc(2).Text)
    .Sections.Item("section2").Controls.Item("label3").Caption = Trim(DataRec.Fields("分布") & " ")
    .Sections.Item("section2").Controls.Item("label4").Caption = Trim(DataRec.Fields("库位") & " ")
    .Sections.Item("section2").Controls.Item("label5").Caption = "324555" '供应商代码
    .Sections.Item("section3").Controls.Item("label51").Caption = CStr(Date + Time) '
    .Sections.Item("section3").Controls.Item("label6").Caption = "白联-DCC(WHITE-DCC)   粉联-收货区(BLUE-RECEIVER)   兰联-仓库(BLUE-WAREHOUSE)   绿联-质量部(GREEN-QUALITY)   黄联-供应商(YELLOW-SUPPLIER)"
    .Sections.Item("section3").Controls.Item("label7").Caption = "使用无碳、A4 纸张打印."
    Set .DataSource = DataRec
    .DataMember = ""
    With .Sections("section1")    For Each controlx In .Controls
            If TypeOf controlx Is RptTextBox Then
                controlx.DataMember = ""
                controlx.DataField = DataRec.Fields(fieldcount).Name
                fieldcount = fieldcount + 1
                
            End If
        Next
       
    End With
    .Refresh
    .Show
    end with
    End Function
      

  3.   

    我试了一下还是不行我在FORM_load里加载:
    DataEnvironment1.Connection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\data\laobao.mdb;Persist Security Info=False"
        DataEnvironment1.Connection1.Open
     在form_unload里关闭:
    DataEnvironment1.Connection1.Close
      

  4.   

    出现的错误是连接无法用于执行此操作,在此上下文中他可能已被关闭或无效是连接关闭打开的问题,我对这了解不是很清楚,头都搞晕了,请哪位大侠,帮帮我。此模块相关的代码如下:Private Sub Form_Load()
       。。    
        DataEnvironment1.Connection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\data\laobao.mdb;Persist Security Info=False"
        DataEnvironment1.Connection1.Open
      
    End SubPrivate Sub Form_Unload(Cancel As Integer)'        DataEnvironment1.rsCommand1.Close
            DataEnvironment1.Connection1.Close
    End SubPrivate Sub butprint_Click()   '打印物资清单
          
             If DataEnvironment1.rsCommand1.State <> adStateClosed Then
                DataEnvironment1.rsCommand1.Close
             End If        DataEnvironment1.rsCommand1.Open "select * from admin"
            Set presult.DataSource = DataEnvironment1
            presult.DataMember = "Command1"        presult.Sections(3).Controls("content").Width = 6000
            presult.Sections(3).Controls("content").Height = 5500           presult.Sections(3).Controls("ppname").Caption = pname
            presult.Sections(3).Controls("ppid").Caption = pid
            presult.Sections(3).Controls("ppdanwei").Caption = pdanwei
            presult.Sections(3).Controls("ppwtype").Caption = pwtype
            presult.Sections(3).Controls("pptime").Caption = ptime
            presult.Sections(3).Controls("content").Caption = printresult
            presult.Show
     End Sub
      

  5.   

    Private Sub Form_Unload(Cancel As Integer) &apos;        DataEnvironment1.rsCommand1.Close 
            DataEnvironment1.Connection1.Close 
    End Sub 
    把以上过程删除,加以下过程,看看:
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    &apos;        DataEnvironment1.rsCommand1.Close 
            DataEnvironment1.Connection1.Close End Sub
      

  6.   

    还是不行我试了下,直接在DataEnvironment1中代码里加入 DataEnvironment1.Connection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\data\laobao.mdb;Persist Security Info=False" 
        DataEnvironment1.Connection1.Open 
    并把原来的UNLOAD里关闭注释掉就OK了。。还是谢谢大家
      

  7.   

    并把原来的UNLOAD里关闭注释掉就OK了。。******************************貌似这个好像没有道理吧?
      

  8.   

    当然也把form_load里的连接语句也给注释了历史图库:www.zglis.com(大量的历史图库,和历史资料)