我做了一个查询程序,用到了DATAGRID控件,可以正常查询,也可以多次查询,当然也可以查询出大数量的结果,总之查询没有任何问题了,可是可是:退出程序(Unload me)后,多数时候会提示Oleaut32.DLL文件错误。为什么?????????说明:退出程序之前,执行了关闭数据库,关闭正常;在VB6环境下运行正常,编译后单独运行就会有此问题。早期调试此程序时,没有发现有此错误,最近总是有,系统也重新恢复(GHOST)了,还是会出现,同时,我手动注册Oleaut32.DLL也成功了。郁闷ing是有什么操作不当?还是操作系统(Win XP Pro)的问题?

解决方案 »

  1.   

    经过测试发现:如果只是查询就退出的话,不会出错,如果双击了DATAGRID的话,就一定会出错,我使用了如下代码:(注:没有申明的变量都是Public方式申明的全局变量)Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
        
        If SerchEND = True Then
            Call OutputDATA
        End If
        If schRs_Open = True Then
            SysState = "系统状态:查询结束,共查询到" & FindCount & "条记录。当前:第" & _ DataGrid1.Book & "条。"
        End If
    End Sub
    Public Sub OutputDATA()
        If FindCount = 0 Then
            Exit Sub
        End If
        Set PnameIN.DataSource = schRS
        Set PabIN.DataSource = schRS
        Set PsexSel.DataSource = schRS
        Set PbirthdayIN.DataSource = schRS
        Set PkindSel.DataSource = schRS
        Set PnumberIN.DataSource = schRS
        Set PaddIN.DataSource = schRS
        Set Ppic.DataSource = schRS
        Set Pheadpic.DataSource = schRS
        Set QMImage.DataSource = schRS
        Set YWsel.DataSource = schRS
        PnameIN.Text = schRS.Fields("Pname")
        PabIN.Text = schRS.Fields("Pab")
        PsexSel.Text = schRS.Fields("Psex")
        PbirthdayIN.Text = schRS.Fields("Pbirthday")
        PkindSel.Text = schRS.Fields("Pkind")
        PnumberIN.Text = schRS.Fields("Pcardnumber")
        PaddIN.Text = schRS.Fields("Padd")
        PcallnumIN.Text = schRS.Fields("pcallnumber")
        PregaddIN.Text = schRS.Fields("pregadd")
        If schRS.Fields("Pother") <> "" Then
            YWsel.Text = schRS.Fields("Pother")
        Else
            YWsel.Text = ""
        End If
        
        Dim A() As Byte
        
        A = schRS.Fields("ppic")
        Open App.Path & "\Tempfiles\temp1.jpg" For Binary As #1      ' 打开输出文件。
        Put #1, 1, A
        Ppic.Picture = LoadPicture(App.Path & "\Tempfiles\temp1.jpg")
        Close #1   ' 关闭文件。
        
        A = schRS.Fields("pheadpic")
        Open App.Path & "\tempfiles\temp2.jpg" For Binary As #1    ' 打开输出文件。
        Put #1, 1, A
        Pheadpic.Picture = LoadPicture(App.Path & "\Tempfiles\temp2.jpg")
        Close #1   ' 关闭文件。
        
        A = schRS.Fields("pnamepic")
        Open App.Path & "\tempfiles\temp3.jpg" For Binary As #1    ' 打开输出文件。
        Put #1, 1, A
        QMImage.Picture = LoadPicture(App.Path & "\Tempfiles\temp3.jpg")
        Close #1   ' 关闭文件。
           
        Me.Refresh
        
    End Sub
      

  2.   

    你这个代码有明显的严重问题:
    你的文件还没关闭,就用LoadPicture,这不行呀!谁教你这样做的?
    你应该先Close,再LoadPicture!
      

  3.   

    To:  homezj(小吉)
     
         老大,我把“Close #1   ' 关闭文件。”提前一句,还是不行的嘛。怎么办?如果查询后直接退出的话,就不会出错,只要点击(双击)了DATAGRID的话,就一定出错。
    在线等待ing
      

  4.   

    A是什么类型?声明过吗?
    你的图片能显示吗?
    不能这样从字段中取二进制数据,应使用字段的GetChunk方法。你是把所有的Close都提前了吗?这代码是你自己写的吗?
    感觉上你代码,本来就不成立,为什么你说正常呢?你运行中达到过设计的目的吗?
      

  5.   

    To:  homezj(小吉)目的是查询数据,鼠标点击DATAGRID时,其他PictureBox的图片、TextBox的字符串等跟着变。功能倒是没有问题。不过,我已经查出来问题原因了。下面这些是多余的,去掉就可以了,不过还不知道为什么(我只觉得和它下面的那些赋值语句重复,但不致到为什么会出错)
        Set PnameIN.DataSource = schRS
        Set PabIN.DataSource = schRS
        Set PsexSel.DataSource = schRS
        Set PbirthdayIN.DataSource = schRS
        Set PkindSel.DataSource = schRS
        Set PnumberIN.DataSource = schRS
        Set PaddIN.DataSource = schRS
        Set Ppic.DataSource = schRS
        Set Pheadpic.DataSource = schRS
        Set QMImage.DataSource = schRS
        Set YWsel.DataSource = schRS是不是语法问题?还是其他原因,因为跟踪不到错误信息。
      

  6.   

    To:  homezj(小吉)     谢谢你的关心,分就给你吧。欢迎下次帮我解惑。