AdoData.Open "select * from SFTlens where [no]= '" & No_R & "'", db, adOpenStatic, adLockOptimistic
            AdoData1.Open "select * from SFTlens where [no]= '" & No_L & "'", db, adOpenStatic, adLockOptimistic
            
            If AdoData.RecordCount = 1 And AdoData1.RecordCount = 1 Then '<========RL都有库存
                If Val(AdoData.Fields("num")) >= Val(NUM_R) And Val(AdoData1.Fields("num")) >= Val(NUM_L) Then '<====库存足够?
                    AdoData.Fields("Num") = Val(AdoData.Fields("Num")) - Val(NUM_R)
                    AdoData1.Fields("Num") = Val(AdoData1.Fields("Num")) - Val(NUM_L)
                    AdoData.Fields("sumprice") = Val(AdoData.Fields("sumprice")) - Val(AdoData.Fields("price")) * Val(NUM_R)
                    AdoData1.Fields("sumprice") = Val(AdoData1.Fields("sumprice")) - Val(AdoData1.Fields("price")) * Val(NUM_L)
                    If AdoData.Fields("Num") = AdoData.Fields("Qnum") Then AdoData.Fields("PT") = 1
                    If AdoData1.Fields("Num") = AdoData1.Fields("Qnum") Then AdoData1.Fields("PT") = 1
                    AdoData.Update
                    AdoData1.Update
………………在执行的时候,出现错误: 
运行中出现了实时错误2147217864(80040e38),无法为更新定位行。一些值可能已在最后一次读取后已更改。
选调试,定位在AdoData1.Update
这个问题怎么解决?

解决方案 »

  1.   

    分两步更新,AdoData.Update时记录AdoData1要更新的值,再重新AdoData1.Open、AdoData1.Update
      

  2.   

    这个办法好,试着把adodata全部更新后updata,然后关闭adodata1,再打开adodata1查找,然后更新,再updata,问题解决了,只是感觉比较繁琐,有没有更简单的办法?
    顺便问一个问题:
    如果数据库中对应位置没有写入数据(No_R,没有写入数据,字符型),然后赋值(a为字符型)
    a=adodata.fildes("No_R")
    这时候len(a)的值是0还是别的?
      

  3.   

    如果要计算len可用adodata.fildes("No_R") & "",这样为空len也为0.
    好像也可以判断adodata.fildes("No_R")=nil