向数据库新增记录时,我是这样写的:
dim rs as New ADODB.Recordset
dim conn as New ADODB.Connectionrs.open "select top 1 * from 表名",conn,1,3
rs.Addnew
...
添加语句
...
rs.Update但是运行时,提示错误。错误信息如下:
run-time error '3251':
Current Recordset does not support updating,This may be a limitation of the provider,or of the selected locktype.调试时发现错误发生在rs.Addnew处,请问这是什么问题,该如何解决?知道的朋友请指点一下,谢了

解决方案 »

  1.   

    dim rs as New ADODB.Recordset
    dim conn as New ADODB.Connectionrs.open "select * from 表名 where 1=2",conn,adOpenKeyset, adLockOptimistic
    rs.Addnew
    ...
    添加语句
    ...
    rs.Update
      

  2.   


    似乎访问sql添加数据好像
    rs.open "select top 1 * from 表名",conn,1,3
    ...
    添加语句
    ...
    rs.Update
    即可,不需要rs.addnew
      

  3.   

    rs.open "select top 1 * from 表名",conn,1,3
    是不是其中的,号你用了全角的了?
      

  4.   

    回复 vbman2003(家人):
    rs.open "select top 1 * from 表名",conn,1,3
    是不是其中的,号你用了全角的了?"用了全角的了"是什么意思?
      

  5.   

    回复 iamtsfw(iamtsfw):
    都无rs.Addnew 又怎么update啊?我看我同事的代码就是那样写的,他的可以,我的就不行哦
      

  6.   

    为什么都喜欢 addnew 
    insert into 表名(字段1,字段2,字段3) values '值1','值2','值3'
      

  7.   

    "用了全角的了"是什么意思?
    ---------------------
    SQL语句中,所有标点符号都应该是半角的,你的语句中有一个逗号好象是全角的不用addnew是修改当前记录集的信息,添加新的信息,按楼主打开的记录信,必须用addnew是啊,如果可能,最好用insert语句插入信息
      

  8.   

    肯定不是半角全角的问题,只是我在这里写的时候用的是全角而已.你们应该看它提示的错误语句来分析是什么原因!
    insert 语句用来新增是不错,但是碰到字段很多时感觉写起来很麻烦而已
      

  9.   

    新增记录:conn.execute "insert into tablename(...) values(...)"
    修改记录:conn.execute "update tablename set ... where ..."
    删除记录:conn.execute "delete from tablename where ..."
      

  10.   

    完整的写出来很多很麻烦的,这里写出来的都是关键语句啊
    各位帮我想想应该是什么原因引起的?
    另外数据库是不是只读的是什么意思???
    如果用下面这段代码
    rs.open "select * from 表名",conn,1,3
    rs.Addnew
    ...
    添加语句
    ...
    rs.Update
    是可以实现新增的哦,那就数据库应该不是只读的啊
      

  11.   

    dim rs as New ADODB.Recordset
    dim conn as New ADODB.Connection
    '.......................................
    rs.open "select * from 表名 ",conn,adOpenKeyset, adLockOptimistic
    '...................
    rs.Addnew
    ...
    添加语句
    ...
    rs.Update
    就可以了,你看看
      

  12.   

    应该是Top惹的祸,你查询出来的记录只有一条,而且是只读方式,然后又在这个基础上面再添加那肯定是不行的,就好象你要强制覆盖掉你查询出来的记录样    :)个人认为,有不对的地方请原谅
      

  13.   

    我同事就是用Top 1 这种方法实现的哦,问他他也不知道为什么,所以我才不明白为什么我那个不行,所以才到网上来请教的
      

  14.   

    你的逗号都要英文状态下输入!top1只去第一条啊
      

  15.   

    如果是插入记录的话建议不要用 Top 关键字,建议在 Where 条件上加一个不成功的值,如:
    rs.open "select * from 表名 Where 1 = 2 ",conn,adOpenKeyset, adLockOptimistic还有,连接有一个属性的 Mode 属性的,它是决定是否只读等,详细参数根据英文即可知道。
      

  16.   

    rs.open "select * from 表名 Where 1 = 2 ",conn,adOpenKeyset, adLockOptimistic
      

  17.   

    rs.open "select * from 表名 where id=0",conn,1,3什么数据库阿?把conn的connectionstring改正以下看看呢,好像遇到过odbc那种的时候就没法更新的情况,换成oledb 的就ok了
    1.odbc
    Driver={SQL Server};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;2.oledb
    Provider=sqloledb;Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
      

  18.   

    关于rs.open "select * from 表名 where id=0",conn,1,3 语句中的后两个参数,小弟一直是一知半解,哪位仁兄可以跟我详细说下其用法,每个参数选项的意思。比如该语句中第三个参数中又有几个选择项,帮我说说每个选项的用法。
      

  19.   

    去看msdn,如果刚开始学,一定要学会看msdn