企业认识管理系统中的一段代码,老是报错:对象变量或with块变量未设置。在网上查到很多关于mrc.EOF报错的问题。但都没有找到解决方法。请高手指点。谢谢。~
Public Sub ShowData()
    Dim j As Integer
    Dim i As Integer    Set mrc = ExecuteSQL(txtSQL, MsgText)
    If mrc.EOF = False Then   //这里~~~~~~~~~~~~
    
        With msgList
        .Rows = 1
        Do While Not mrc.EOF
            .Rows = .Rows + 1
            For i = 1 To mrc.Fields.Count
                Select Case mrc.Fields(i - 1).Type
                    Case adDBDate
                        .TextMatrix(.Rows - 1, i) = Format(mrc.Fields(i - 1) & "", "yyyy-mm-dd")
                    Case Else
                        .TextMatrix(.Rows - 1, i) = mrc.Fields(i - 1) & ""
                End Select
            Next i
            mrc.MoveNext
        Loop
        End With
    End If
    mrc.Close
End Sub

解决方案 »

  1.   

    你的mrc 怎么没有定义呢?况且你的程序结构很混乱.
      

  2.   

    mrc明显什么都没有定义啊,一般你要用.EOF的话都应该定义个dim mrc as new recordset
      

  3.   

    mrc 没有定义
    返回的是个记录集吗?
      

  4.   

    这只是报错的那一段。mrc前面已经定义成Public mrc As ADODB.Recordset了。有人说改成Public mrc As new ADODB.Recordset我试了。还是不行!
      

  5.   

    你不会没有配置数据源吧?
    如果是这样,那么你模块中ExecuteSQL函数的连接代码:
    Set cnn = New ADODB.Connection
    cnn.Open ConnectString
    改为:
    Set cnn = New ADODB.Connection
    cnn.Open "Provider = SQLOLEDB.1;Persist Security Info = False;" & _
            "User ID = sa;Password = ;Data Source = 127.0.0.1;" & _
            "Initial Catalog = personnel" 其中的IP也可是安装SQL数据库的服务器名称
      

  6.   

    你现在贴的这段代码中,没有SQL语句。也就是txtSQL="",没有返回记录集,mrc.EOF = False 自然出错!
      

  7.   

    我确定已经连接上了。能进入系统。而且我添加员工信息可以添加啊。如果选择修改考勤信息,修改工作评价,或者修改,员工工资的时候。如果先选择修改其中一个的时候,先选的不会出错。但是,接下来再选其中的任何一个。都会报错:对象变量或with块变量未设置!