dim Sql as string
dim Rs as adodb.recordset
dim RowNum as long
dim i as long
 sql="select * from customer"
 set Rs=cn.exectue(sql)
       if Rs.recordcount<18 then
          RowNum=18-Rs.recordcount
          i=1          
          do until i=RowNum
              rs.addnew
              rs.fields(0)="a"
              rs.update
              i=i+1
          loop
        end if
大家请看一下,以上的语句指的是如果取出的记录集条数不够18,就另外新增几条记录,直到够18条.
然而,上面的语句执行到 rs.addnew 时,就提示此种操作不允许。如果不利用临时表,上面的记录
新增应怎么写?谢谢!

解决方案 »

  1.   

    如果不想修改数据库中数据,不要用rs.update 
      

  2.   

    rs.fields(0)="a" 没有设主键吗?如果设了主键这样会冲突
      

  3.   

     谢谢,还没执行到那一步,到rs.addnew就不能通过了. 
      

  4.   

    在rs.addnew 这个地方提示"实时错误3251,当前记录集不支持更新.这可能是提供程序的限制,也可能是选定锁定类型的限制."
      

  5.   

        Dim Sql As String
        Dim Rs As ADODB.Recordset
        Dim RowNum As Long
        Dim i As Long    Set Rs = New ADODB.Recordset
        Rs.Open "select * from customer", cn, adOpenStatic, adLockOptimistic
        
        If Rs.RecordCount < 18 Then
            RowNum = 18 - Rs.RecordCount
            i = 1
            Do Until i = RowNum
                Rs.AddNew
                Rs.Fields(1) = "a"
                i = i + 1
            Loop
        End If
      

  6.   

    加上rs.LockType = adLockOptimistic
      

  7.   

    7楼的要在rs.addnew后面加上刷新就好了。
      

  8.   

    好象以前弄asp +access 时遇到过 "实时错误3251,当前记录集不支持更新"
    好象是因为主键是自增长字段 并且 表是空的,手工加一条记录就可以了...
    试试吧 祝楼主好运