使用ADO读取SQL-SERVER上的一个数据集,通过PRINTER对象写的打印程序,第一次打印没有问题,打印完成后再通过ADO反复打开几次数据集并向text控件或combo控件的text属性赋值时,给出益出错误,程序中断,按F8可正常运行到下一条程序或按F5正常运行程序,继续运行程序就出现VB程序错误,说ADO15.DLL错误,然后VB死掉了。
谁知道该怎么解决这个问题,谢谢!

解决方案 »

  1.   

    安装VBSP5再试试
    记录打开时先确认是否为关闭状态: if rs.state=adstateopen then rs.close
      

  2.   

    谢谢楼上的,不过还是不行。
    记录集肯定是关闭的,不然重新打开的时候就会出错了。
    安装了VBSP5,可是问题依旧。
      

  3.   

    补充说明一下,使用PⅢ933,128M内存以下配置的计算机会出现上面的错误,而使用PⅣ以上配置的计算机就不会出现这个问题。
      

  4.   

    Private Sub cmbid_Click()
    Dim cmd As New ADODB.Command
    Dim rs1 As New ADODB.RecordsetText1.Text = ""                 '这个控件中存放的是打印时间
    If InStr(cmbid, "//") > 0 Then
        ssql = "select id,printdate from title where id = '" + Left(cmbid, InStr(cmbid, "//") - 1) + "//000'"
    Else
        If Len(cmbid) = 11 Then
            ssql = "select id,printdate from title where id = '" + Left$(cmbid, 8) + "001'"
        Else
            ssql = "select id,printdate from title where id = '" + Left$(cmbid, 8) + "001" + Right$(cmbid, 1) + "'"
        End If
    End If
    cmd.ActiveConnection = cn
    cmd.CommandText = ssql
    rs1.Open cmd, , adOpenKeyset, adLockReadOnly, adCmdText
    If Not (rs1.BOF And rs1.EOF) Then
        If IsNull(rs1("printdate")) Then
            Text1.Text = Format(Date, "mm.dd")
        Else
            Text1.Text = rs1("printdate")                '在这句话出现溢出错误
        End If
    End If
    rs1.CloseEnd Sub
    该事件被执行多次,只有执行打印以后,再执行几次该事件才会在标注处出现溢出错误。
    打印时重新定义的几个数据集变量,读取数据库中的信息,然后用PRINTER对象执行打印。
      

  5.   

    rs1.Open cmd, , adOpenKeyset, adLockReadOnly, adCmdText
    換成
    rs1.Open cmd, , adOpenstatic, adLockReadOnly, adCmdText
    試試
      

  6.   

    不用command对象,直接 
    rs1.Open ssql,cn, adOpenKeyset, adLockReadOnly, adCmdText
    试一下
      

  7.   

    我向你推荐一个极好的打印控件,免费提供全部源代码:http://www.tastysoft.net/progame/web/dllprint/http://www.tastysoft.net/progame/web/orderprint/http://www.tastysoft.net/progame/web/希望能对你有所帮助。