| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 327 人关注过本帖
标题:VFP 程序设计_嵌套循环_错在哪儿了_只有第一行的dpth计算正确,第二行的计算 ...
取消只看楼主 加入收藏
Heris_Lau
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2022-9-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
VFP 程序设计_嵌套循环_错在哪儿了_只有第一行的dpth计算正确,第二行的计算结果就不对了
程序代码:
GOTO TOP
DO WHILE .NOT. EOF()
    S=0
    FOR k=1 TO ALEN(B)+1
        IF k=ALEN(B)+1
            REPLACE dpth WITH k
        ELSE
            Y=B(k)
            S=S+&Y
            ?"S=",S
            IF S<(yxkc_All+ykzt_all)
                LOOP
            ELSE
                REPLACE dpth WITH IIF(ISNULL(k-1+1-(S-yxkc_all-ykzt_all)/&Y)=.T.,0,(k-1+1-(S-yxkc_all-ykzt_all)/&Y)) FOR &Y>0
                EXIT  &&这里使用exit到底是只跳出for..endfor循环,还是跳出了do while... enddo 的循环
            ENDIF
        ENDIF
    ENDFOR
    SKIP +1
ENDDO
搜索更多相关主题的帖子: 结果 计算 VFP 循环 FOR 
2023-12-27 14:06
Heris_Lau
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2022-9-25
收藏
得分:0 
回复 2楼 sdta
我说第一行,计算正确确切是指第一条记录计算正确,而从第二条记录开始计算结果就是错误的
2023-12-27 14:22
Heris_Lau
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2022-9-25
收藏
得分:0 
fcst_sq24_kc.zip (585 Bytes)

程序计算的目标是:是计算库存(yxkc_all)和在途(ykzt_all)能满足未来几个月(dpth)的需求,Q202401是指2024年1月的预测需求,Q202402是指2024年2月的预测需求,以此类推,目前附件中第一行的计算结果正确dpth 5.26,意思是库存和在途能满足未来5.26个月的需求,但是从第二条记录开始,dpth就计算错误了,但计算dpth的公式IIF(ISNULL(k-1+1-(S-yxkc_all-ykzt_all)/&Y)=.T.,0,(k-1+1-(S-yxkc_all-ykzt_all)/&Y))是正确的
2023-12-27 16:13
Heris_Lau
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2022-9-25
收藏
得分:0 
上楼是涉及的数据表格,请大神指点。我比较怀疑的一个点是 exit的应用,程序执行到exit后到底是跳出endfor的循环,还是跳出do while enddo的循环
2023-12-27 16:22
Heris_Lau
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2022-9-25
收藏
得分:0 
回复 7楼 sdta
数组B处理之前的数据的,这里主要是通过数组指向Q202401,Q202402,等这几个字段的,我这个程序 skip +1 也没发挥作用,程序没有逐条记录计算
2023-12-27 16:47
Heris_Lau
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2022-9-25
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

这图片是我尝试转程序,VFP提示,在没有逐条计算的情况下,就到表尾了,这个有问题,但是我不知道错在哪儿
2023-12-27 16:51
Heris_Lau
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2022-9-25
收藏
得分:0 
我找到错误了,是在 if的命令语句 REPLACE dpth WITH IIF(ISNULL(k-1+1-(S-yxkc_all-ykzt_all)/&Y)=.T.,0,(k-1+1-(S-yxkc_all-ykzt_all)/&Y)) for &Y>0,把&Y>0去掉就可以了,因为加上for条件,这条命令就对整体表格起作用了,指针直接到表尾了,因此报错,已到表尾,无法逐条计算
2023-12-27 17:03
快速回复:VFP 程序设计_嵌套循环_错在哪儿了_只有第一行的dpth计算正确,第二行 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018945 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved