你打开记录集时候的游标不对。应该是打开键集游标
rs.open searchstr,cn,3,1

解决方案 »

  1.   

    既然Fields(0)是主键,程序为何未对此字段赋值?End IF 在哪?
      

  2.   

    补充:对数据库进行操作,最好是用命令集或事务处理来完成。这样可以更好的保证数据安全性和完整性!!
    而且VB里面的addnew,update,只支持动态游标!!
      

  3.   


    If rs.State = adStateOpen Then
       rs.Close
    Else
       searchstr="SELECT * FROM TABLENAME WHERE FIELDS(I)='" & stringarray(0) & "
       rs.Open searchstr, cn, 2, 3
       IF RS.BOF AND RS.EOF THEN 
          rs.AddNew
          For i = 0 To UBound(stringarray)-1
            rs.Fields(i) = stringarray(i)
          Next
    ELSE
        For i = 1 To UBound(stringarray)-1
           rs.Fields(i) = stringarray(i)
        Next  
        rs.Update
    ENDIF 
      

  4.   

    错了不好意思!
    If rs.State = adStateOpen Then
       rs.Close
    Else
       searchstr="SELECT * FROM TABLENAME WHERE FIELDS(I)='" & stringarray(0) & "
       rs.Open searchstr, cn, 2, 3
       IF RS.BOF AND RS.EOF THEN 
          rs.AddNew
          For i = 0 To UBound(stringarray)-1
            rs.Fields(i) = stringarray(i)
          Next
       ELSE
        For i = 1 To UBound(stringarray)-1
           rs.Fields(i) = stringarray(i)
        Next  
       endif 
        rs.Update
    ENDIF