小弟在使用recordset.Update时出现错误,百思不得其解,请各位大大帮帮忙啊!!!
        With mBodyInfo
            Dim lChat As Double
            Dim lValue As Double
            mBodyInfo.MoveFirst
            lChat = 0
            For i = 0 To mBodyInfo.RecordCount
                lValue = CInt(mBodyInfo!fld1)
                lChat = lChat + (mBodyInfo!fld1 - lValue)
                If i <> mBodyInfo.RecordCount - 1 Then
                    mBodyInfo!fld1 = lValue
                    mBodyInfo!fld2 = lValue * 0.17
                Else
                    mBodyInfo!fld1 = lValue + lChat
                    mBodyInfo!fld2 = (lValue + lChat) * 0.17
                End If
                .Update
                .MoveNext
            Next i
        End With在执行到“mBodyInfo!fld1 = lValue”时出现错误:80040e21 多步操作产生错误,请检查每一步的状态值。

解决方案 »

  1.   

    For i = 0 To mBodyInfo.RecordCount应该是For i = 0 To mBodyInfo.RecordCount-1吧吧吧吧!!!!!
      

  2.   

    正如楼上所说For i = 0 To mBodyInfo.RecordCount应改为For i = 0 To mBodyInfo.RecordCount-1
    不过此错误应该不是由此而引起的
    看看你的fld1字段定义类型及长度再看看lValue是否与其匹配
      

  3.   

    For i = 0 To mBodyInfo.RecordCount应为For i = 0 To mBodyInfo.RecordCount-1
    是我忘写了,我单步执行,数据类型没问题,也能取到mBodyInfo!fld1的值,但是更改
    mBodyInfo!fld1的值时就出错。
      

  4.   

    字段 fld1 和 fld2 是什么数据类型,能否接受 Double 类型的数据?解决办法:
    1 更改表的设计
    2 赋值前做数据类型转换,例如 Cint 或 CLng。
      

  5.   

    数据类型是numeric(11,2)程序在执行第一次循环的时候就出错,没有溢出。
    我的记录集是多表查询结果集,在单表查询的情况下我测试可以执行,没问题。