我要用VB代码更新 access里的数据,但系统提示“当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制”,代码如下



 Dim cn As New ADODB.Connection, rs1 As New ADODB.Recordset, sql As String         Private Sub Command5_Click()
            cn.Open "provider=microsoft.jet.oledb.4.0;data source=C:\Program Files\Microsoft Visual Studio\VB98\danzhuangli.mdb"
           sql = "basicli where 编号='1'"
          rs1.Open sql, cn
          rs1.Fields("桩径") = Text1.Text
  
          rs1.Update
  end sub
 问题是想在一个danzhuangli.mdb里的basicli表里更新数据,比如更新里面的“桩径”列为 Text1.Text内容,但出现如上错误,请各位大侠指教啊~在线等~谢谢!!!!!
    

解决方案 »

  1.   

    我工作机器上没有装Access,我认为出现这个问题可能与你的Access种的设置有关,或者VB版本太旧
      

  2.   

     sql = "basicli where 编号='1'" 
    改为sql="select *from  basicli where 编号='1'" 
    rs1.Open sql, cn 这句后面有可选参数,比如adOpenKeyset
    cn.Open "provider=microsoft.jet.oledb.4.0;data source=C:\Program Files\Microsoft Visual Studio\VB98\danzhuangli.mdb;Persist Security Info=False" 
    不知对不对
      

  3.   

    客户端类型问题:
    cn.CursorLocation = adUseClient
    看看行不?
      

  4.   

    在access里将"编号"字段设为主键。
      

  5.   

    在access里将"编号"字段设为主键
      

  6.   

    客户端游标更新后由ADO负责和数据库沟通,但是没有主键信息的话数据库是无法知道ADO需要更新哪个数据的,这个过程是你先调用ADO的update,然后由ADO底层去处理需要update的数据,而你在select的时候并没有一个可以唯一代表记录的主键,虽然在你的设想中只有1个数据,但是这只是一个特例,更多的是有很多记录的记录集,所以需要有一个能唯一代表一条记录的主键来作为ADO和数据库之间的沟通.