运行时出现“对象变量或With对象变量未设置“
代码如下:
Private Sub Command1_Click()
Dim mrc As ADODB.Recordset
txtsql = "select uname from use where uname='" & Trim(Text1.Text) & "'"
Set mrc = ExecuteSQL(txtsql)
If mrc.EOF = True Then这里出错,“对象变量或With对象变量未设置“
  MsgBox " 用户名错误或密码错误!", vbExclamation + vbOKOnly, "警告"
  Text1.SetFocus
  Text1.SelStart = 0
  Text1.SelLength = Len(Text1.Text)
  Exit Sub
End If
uname = mrc.Fields(0)
txtsql = "select uname from use where password='" & Trim(Text2.Text) & "'"
Set mrc = ExecuteSQL(txtsql)
If mrc.EOF = True Then
  MsgBox " 用户名错误或密码错误!", vbExclamation + vbOKOnly, "警告"
  Text2.SetFocus
  Text2.SelStart = 0
  Text2.SelLength = Len(Text2.Text)
  Exit Sub
End If MDIForm1.Show
Unload Me
End Sub
Public Function ExecuteSQL(ByVal sql As String) As ADODB.Recordset
Dim mycon As ADODB.Connection
Dim rst As ADODB.Recordset
Set mycon = New ADODB.Connection
mycon.ConnectionString = connstring
mycon.Open
Dim stokens() As String
On Error GoTo exectuesql_error
stokens = Split(sql)
If InStr("INSER,DELETE,UPDATE", UCase(stokens(0))) Then
      mycon.Execute sql
Else
  Set rst = New ADODB.Recordset
  rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
End If
exectuesql_exit:
  Set rst = Nothing
  Set mycon = Nothing
  Exit Function
exectuesql_error:
  Resume exectuesql_exit
End Function请多多指教

解决方案 »

  1.   

    Dim mrc As ADODB.Recordset'加下面这句话
    set mrc=new adodb.recordset没有实例化,当然会出错了
      

  2.   

    other:你的代码写得杂乱无章,毫无思想
    明明可简单的一句查询,非要写到ExecuteSQL中去改一下吧
      

  3.   

    其他地方需要调用到ExecuteSQL嘛,ExecuteSQL是在公用模块里的
    Dim mrc As ADODB.Recordset'加下面这句话
    set mrc=new adodb.recordset
    还是同样错误
      

  4.   

    加这个没用得,我得也是调用executesql看看前面有没有
    Private adocon As New ADODB.Connection
      

  5.   

    Set mrc = ExecuteSQL(txtsql)
    这句错误.
    mrc只能这样set mrc=new adodb.recordset
    mrc=executesql()
      

  6.   

    代码方面确实比较乱不过根据楼主的思路 我自己电脑上 把数据库指向 VB自带的access数据库 BIBLIO.MDB 并查询其中的 表 : authors 就没问题 但是随便查询1个不存在的表 就出现和楼主相同的问题
      

  7.   

    没有实例化需要
    set rs=new adodb.recordset
      

  8.   

    Dim mrc As new ADODB.Recordset