Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]循环语句不起作用

陈新伟  发表于:2013-04-21 16:11:34  
复制

搞了两天了,一条循环代码始终不起作用,真的是欲哭无泪呀,发上来看看有人能帮帮我吗?for j段不起作用。我思路是这样的rs记录集反复循环验证rst3记录集中是否有跟rs中某条记录相等的,没有的话就从rs中向rst3填入该条记录,有的话就在rst3的相关字段中更新数据。
 
    rs.MoveFirst
    For i = 0 To rs.RecordCount - 1                     rs记录集开始循环
        cunzai = False
        If rst3.EOF = True Then
            cunzai = False
        Else
            rst3.MoveFirst
            For j = 0 To rst3.RecordCount - 1                       '思路是如果在库存表中存在该商品资料,则更新该商品库存量,可是反复发现for j ........next j 这段不起作用
                If rst3("spid") = rs("spid") Then
                    rst3("sl") = rst3("sl") + rs("sl")
                    rst3("jhj") = rs("jhj")
                    rst3("je") = rst3("sl") * rst3("jhj")
                    rst3.Update
                    cunzai = True
                    Exit For
                Else
                    rst3.MoveNext
                End If
            Next j
        End If
        If cunzai = False Then                       '如果库存表中不存在该商品资料,则在库存表中添加                                      每次运行窗体测试,都是运行这段代码
            rst3.AddNew
            rst3("spid") = rs("spid")
            rst3("sptm") = rs("sptm")
            rst3("jhj") = rs("jhj")
            rst3("sl") = rst3("sl") + rs("sl")
            rst3("je") = rst3("jhj") * rst3("sl")
            rst3("ckmc") = Me.shck
            rst3.Update
        End If
Next i

 

Top
竹笛 发表于:2013-04-21 16:37:01
 cunzai = False
    If rst3.EOF = True Then

        cunzai = False

    else

       

   endi if


这几行是用来做什么的? 永远让 cunzai= False? 如果是这样,何必写 if.....endif 语句呢?



殷小宝 发表于:2013-04-21 17:32:01
 rst3.EOF = True,这句永远为真,难道一个记录集没有结束的时候吗?

cspa 发表于:2013-04-22 14:29:02

有 rs.MoveFirst,无rs.MoveNext,要 For i = 0 To rs.RecordCount - 1 循环何用?

rs.MoveFirst
    For i = 0 To rs.RecordCount - 1                     rs记录集开始循环
        cunzai = False
        If rst3.EOF = True Then
            cunzai = False
        Else
            rst3.MoveFirst
            For j = 0 To rst3.RecordCount - 1                       '思路是如果在库存表中存在该商品资料,则更新该商品库存量,可是反复发现for j ........next j 这段不起作用
                If rst3("spid") = rs("spid") Then
                    rst3("sl") = rst3("sl") + rs("sl")
                    rst3("jhj") = rs("jhj")
                    rst3("je") = rst3("sl") * rst3("jhj")
                    rst3.Update
                    cunzai = True
                    Exit For
                Else
                    rst3.MoveNext
                End If
            Next j
        End If
        If cunzai = False Then                       '如果库存表中不存在该商品资料,则在库存表中添加                                      每次运行窗体测试,都是运行这段代码
            rst3.AddNew
            rst3("spid") = rs("spid")
            rst3("sptm") = rs("sptm")
            rst3("jhj") = rs("jhj")
            rst3("sl") = rst3("sl") + rs("sl")
            rst3("je") = rst3("jhj") * rst3("sl")
            rst3("ckmc") = Me.shck
            rst3.Update
        End If
     rs.MoveNext          ’--------------加此句试试

 Next i

陈新伟 发表于:2013-04-22 23:00:42

谢谢。我的问题已经解决了。不需要双循环。



总记录:4篇  页次:1/1 9 1 :