部分代码如下,逐语句执行发现到"rs!RR = In_Data(DataNo - j, 20) "这一行就退出,不执行 rs.Update,不知是何因?请各位大哥,精通VB与数据库的高手帮忙指点更正巧,谢谢!
Public In_Data(99999, 22) As String
Public Sub SaveData(ok As String)
   Dim rs As ADODB.Recordset
       Set rs = ExecSQL_Rs("select * from OutData", cn, adOpenDynamic, adLockOptimistic)
       For j = 0 To DataNo
           If In_Data(DataNo - j, 0) = OK Then
           rs.AddNew
                rs!AA = In_Data(DataNo - j, 0)
                rs!BB = In_Data(DataNo - j, 1)
                rs!CC = In_Data(DataNo - j, 2)
                rs!DD = In_Data(DataNo - j, 3)
                rs!EE = In_Data(DataNo - j, 4)
                rs!FF = In_Data(DataNo - j, 5)
                rs!GG = In_Data(DataNo - j, 6)
                rs!HH = In_Data(DataNo - j, 7)
                rs!II = In_Data(DataNo - j, 8)
                rs!JJ = In_Data(DataNo - j, 9)
                rs!KK = In_Data(DataNo - j, 10)
                rs!LL = In_Data(DataNo - j, 11)
                rs!MM = In_Data(DataNo - j, 12)
                rs!NN = In_Data(DataNo - j, 13)
                rs!OO = In_Data(DataNo - j, 14)
                rs!PP = In_Data(DataNo - j, 15)
                rs!QQ = In_Data(DataNo - j, 16)
                rs!RR = In_Data(DataNo - j, 20)    '执行到这行就退出,不知是什么原因?
                rs!SS = Now
                If In_Data(DataNo - j, 22) = "" Then In_Data(DataNo - j, 22) = 0
                rs!TT = In_Data(DataNo - j, 22)
                rs!UU = In_Data(DataNo - j, 17)
                rs!VV = In_Data(DataNo - j, 18)
                rs!WW = In_Data(DataNo - j, 19)
                rs!YY = In_Data(DataNo - j, 23)
           rs.Update
           Exit For
           End If
       Next j
End Sub

解决方案 »

  1.   

    有没有看err的错误描述,根据提示来调试吧
      

  2.   

    TO:LUOYEFENG
       没有错误的提示,只是执行到rs!RR = In_Data(DataNo - j, 20) 这一行,后面的都不执行。(rs!SS = Now 
                    If In_Data(DataNo - j, 22) = "" Then In_Data(DataNo - j, 22) = 0 
                    rs!TT = In_Data(DataNo - j, 22) 
                    rs!UU = In_Data(DataNo - j, 17) 
                    rs!VV = In_Data(DataNo - j, 18) 
                    rs!WW = In_Data(DataNo - j, 19) 
                    rs!YY = In_Data(DataNo - j, 23) 
              rs.Update 
              Exit For 
    )所以不能更新。
      

  3.   

    由于不知道In_Data方法是怎么实现,只能建议首先检查rs是否确实创建,然后看看In_Data返回的值和rs!RR 字段类型和大小是否一致。如果出错,err.Description肯定有错误描述
      

  4.   

    估计是数据类型不对出错了,建议用cn.execute "insert into table(...) values(...)"这种方法新增记录
      

  5.   

    我现改 rs.Update 在rs!RR = In_Data(DataNo - j, 20)后面,数据库中有AA-RR数据.
    Public Sub SaveData(ok As String) 
      Dim rs As ADODB.Recordset 
          Set rs = ExecSQL_Rs("select * from OutData", cn, adOpenDynamic, adLockOptimistic) 
          For j = 0 To DataNo 
              If In_Data(DataNo - j, 0) = OK Then 
              rs.AddNew 
                    rs!AA = In_Data(DataNo - j, 0) 
                    rs!BB = In_Data(DataNo - j, 1) 
                    rs!CC = In_Data(DataNo - j, 2) 
                    rs!DD = In_Data(DataNo - j, 3) 
                    rs!EE = In_Data(DataNo - j, 4) 
                    rs!FF = In_Data(DataNo - j, 5) 
                    rs!GG = In_Data(DataNo - j, 6) 
                    rs!HH = In_Data(DataNo - j, 7) 
                    rs!II = In_Data(DataNo - j, 8) 
                    rs!JJ = In_Data(DataNo - j, 9) 
                    rs!KK = In_Data(DataNo - j, 10) 
                    rs!LL = In_Data(DataNo - j, 11) 
                    rs!MM = In_Data(DataNo - j, 12) 
                    rs!NN = In_Data(DataNo - j, 13) 
                    rs!OO = In_Data(DataNo - j, 14) 
                    rs!PP = In_Data(DataNo - j, 15) 
                    rs!QQ = In_Data(DataNo - j, 16) 
                    rs!RR = In_Data(DataNo - j, 20) 
                      rs.Update 
                      rs!SS = Now 
                    If In_Data(DataNo - j, 22) = "" Then In_Data(DataNo - j, 22) = 0 
                    rs!TT = In_Data(DataNo - j, 22) 
                    rs!UU = In_Data(DataNo - j, 17) 
                    rs!VV = In_Data(DataNo - j, 18) 
                    rs!WW = In_Data(DataNo - j, 19) 
                    rs!YY = In_Data(DataNo - j, 23) 
             
              Exit For 
              End If 
          Next j 
    End Sub
      

  6.   

    Leftie说得对
    不要用Recrodset的addnew,update,delete等命令进行数据的增加、修改、删除等,要用标准的SQL语句进行操作
    这才是标准的写法