rstZhuCe.Open "select * from " & testid, ZhuCe, adOpenKeyset, adLockOptimistic
    '对ID字段排序0-6000
    Dialog.Show
    Dialog.ProgressBar1.Max = 6000
    For inum = 0 To 6000 Step 1
    Dialog.ProgressBar1.value = inum
    rstZhuCe.AddNew
    rstZhuCe.Fields("ID").value = inum
    rstZhuCe.Update
    DoEvents
    Next inum
    Dialog.Hide
    rstZhuCe.Close发现会出错。数据不是一直从0-6000,偶尔会比如从4800 就直接到5100了,然后在接着来,会出现几个这样的情况 
用的 为什么会出现这样情况呢?

解决方案 »

  1.   

    1楼看错了,作废。你在update之后加一条语句:
    debug.assert rstZhuCe.Fields("ID").value =inum跟进去看看
      

  2.   

    这个是我的效验
      rstZhuCe.Open "select * from " & testid, ZhuCe, adOpenKeyset, adLockOptimistic
        rstZhuCe.MoveFirst
    For inum = 0 To 6000 Step 1
        If inum = rstZhuCe.Fields("ID").value Then
        rstZhuCe.MoveNext
        Else
        a = MsgBox("新建试验编号效验有误,", vbOKOnly, "错误")
        check6000 = False
        rstZhuCe.Close
        Exit Function
        End If
        Next
    我发现在赋值ID和效验直接放入延时程序sleep 300后 赋值就不会出错了,这就是说 写入数据库后,需要一定时间。然后在打开效验才会数据正确