连接数据库中
为什么我在遍历recordset对象时,
do while not recordest(对象).eof
loop这句话总是提示错误:对象变量或者with块变量未设置啊谢谢大家了

解决方案 »

  1.   

    Private Sub Form_Load()
        Dim txtSQL As String
        Dim MsgText As String
        Dim mrc As ADODB.Recordset
        
        txtSQL = "select distinct typename from roomtype"
        Set mrc = ExecuteSQL(txtSQL, MsgText)
        If Not mrc.EOF Then
            Do While Not mrc.EOF
                Combo1(0).AddItem mrc.Fields(0)
                mrc.MoveNext
            Loop
        End If
        mrc.Close
        
        txtSQL = "select distinct price from roomtype"
        Set mrc = ExecuteSQL(txtSQL, MsgText)
        If Not mrc.EOF Then
            Do While Not mrc.EOF
                Combo1(1).AddItem mrc.Fields(0)
                Combo1(2).AddItem mrc.Fields(0)
                mrc.MoveNext
           Loop
        End If
        mrc.Close
        
        
    End Sub
      

  2.   

    Dim mrc As ADODB.Recordset是不是这句要改成Dim mrc As new ADODB.Recordset
    如果改过来后,提示,对象关闭时不允许操作...
    为什么呢?
      

  3.   

    dim cn As New ADODB.Connection
    dimrs As New ADODB.Recordset
     If cn.State = adStateOpen Then cn.Close
        cn.Provider = "Microsoft.Jet.OLEDB.4.0"
        cn.ConnectionString = App.Path & "\data\ELECTRIC.mdb"
        cn.Open
        With rs
            Set .ActiveConnection = cn
            .LockType = adLockPessimistic
            .CursorType = adOpenDynamic
            .CursorLocation = adUseClient
            .Open "select * from a"
                    If Not .EOF Then
                        .MoveFirst
                        While Not .EOF
                         debug.print .fields("id").value
                        .MoveNext
                        Wend
                    End If
        End With
        rs.close
        cn.close
      

  4.   

    Private Sub Form_Load()
        Dim txtSQL As String
        Dim MsgText As String
        Dim mrc As ADODB.Recordset
        
        txtSQL = "select distinct typename from roomtype"
        Set mrc = CreateObject("ADODB.Recordset")
        mrc.Open txtSQL, conn, 3
        Do While Not mrc.EOF
           Combo1(0).AddItem mrc.Fields(0)
           mrc.MoveNext
        Loop
        mrc.Close
        
        txtSQL = "select distinct price from roomtype"
        Set mrc = CreateObject("ADODB.Recordset")
        mrc.Open txtSQL, conn, 3
        Do While Not mrc.EOF
                Combo1(1).AddItem mrc.Fields(0)
                Combo2(2).AddItem mrc.Fields(0)
           mrc.MoveNext
        Loop
        mrc.Close
    End Sub
      

  5.   

    Dim mrc As ADODB.Recordset是不是这句要改成Dim mrc As new ADODB.Recordset//new代表的实例子化,没实例化怎么来的对象如果改过来后,提示,对象关闭时不允许操作...
    //从这句代码    Set mrc = ExecuteSQL(txtSQL, MsgText) 看不出问题,因为你ExecuteSQL是什么?我不知道上面的代码看不出任何的数据库open 一般情况直接用recordset去open
    在open前对recordset的状态进行判断好了
    比如
    if mrc.state<>adstateclosed then mrc.closed
      

  6.   


    dim cn As New ADODB.Connection
    dimrs As New ADODB.Recordset
    If cn.State = adStateOpen Then cn.Close
    cn.Provider = "Microsoft.Jet.OLEDB.4.0"
    cn.ConnectionString = App.Path & "\data\ELECTRIC.mdb"
    cn.Open
    With rs
    Set .ActiveConnection = cn
    .LockType = adLockPessimistic
    .CursorType = adOpenDynamic
    .CursorLocation = adUseClient
    .Open "select * from a"
    If Not .EOF Then
    .MoveFirst
    While Not .EOF
    debug.print .fields("id").value
    .MoveNext
    Wend
    End If
    End With
    rs.close
    cn.close
      

  7.   

    在工程引用中添加ADO引用了吗?
      

  8.   

    在工程中你肯定没有引用ADO吧.