下面这段代码先是访问数据库中的一个表test,可以访问成功并能添加数据。可是到了访问第二个表into时却提示rsycy!ycy = Trim(Combo1.Text)这句代码“对象变量或 With 块变量没有设置(错误 91)”,并且Set rsycy = ExecuteSQL(sqtd, msgtext)这句中的rsycy=nothing。请各位指点。其中ExecuteSQL(sqtd, msgtext)是一个访问sqlsever 2000的数据库函数。下面是代码:
Dim sqtd As String
Dim msgtext As String
Dim rsycy  As ADODB.Recordset    
    sqtd = "select * from test"
    Set rsycy = ExecuteSQL(sqtd, msgtext)
     rsycy.AddNew
     rsycy!jcl = Label6.Caption
     rsycy!hph = Label5.Caption
     rsycy!jc = Label9.Caption
     rsycy!z_control = "0"
     rsycy!location = "one"
     rsycy!time = Format(Now, "yyyy/mm/dd hh:mm:ss")
     rsycy.Update
     rsycy.close
    
    sqtd = "select ycy from into where jcl='" & Trim(Label6.Caption) & "'"
    Set rsycy = ExecuteSQL(sqtd, msgtext)
    rsycy!ycy = Trim(Combo1.Text)
    rsycy.Update
    rsycy.close

解决方案 »

  1.   

    在第二次用的rsycy的时候在前边加一个set rsycy=nothing 看看.
      

  2.   

    单步调试,看你第二次执行返回之后是否成功的返回了记录集。═══════════════════
    http://www.egooglet.com 资料、源码下载http://bbs.j2soft.cn 论坛交流
    ═══════════════════
      

  3.   

    问题是ExecuteSQL是否真的返回了一个Recordset集合???估计是你的ExecuteSQL函数有问题,修改下该函数试试.进行单步调试可找到错误
      

  4.   

    不好意思,问题在这里::
    Dim rsycy  As ADODB.Recordset    这里定义的rsycy  是一个变量,应修改为Dim rsycy  As New ADODB.Recordset如此即可.
      

  5.   

    在rsycy!ycy = Trim(Combo1.Text) 前务必保证rsycy供给不是一个空记录集合
    如果是空就返回你钢材的哪个错误,我以前也遇到这个问题了
      

  6.   

    写数据库的方法本身就不好,为什么不用sql直接写呢?如果你要用addnew or update还不如直接用Dao来做系统了。Dao访问Access数据库比Ado好用,简单多了。
      

  7.   

    谢谢各位就是
    Dim rsycy  As ADODB.Recordset    这里定义的rsycy  是一个变量,应修改为Dim rsycy  As New ADODB.Recordset
    这个问题。