| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1011 人关注过本帖
标题:纠结两天仍无果,只好再来请教如何写这样一个程序
只看楼主 加入收藏
kinvanhon
Rank: 5Rank: 5
来 自:战争学院
等 级:贵宾
威 望:16
帖 子:99
专家分:258
注 册:2014-10-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:19 
纠结两天仍无果,只好再来请教如何写这样一个程序
题外话:上次请教的是连接查询没结果,sdta大大帮我找到了问题所在,再次表示感谢。
其实我也不是那种遇到问题就来求助的人,只是确实还没入门,工作上又有任务,不允许有那么多时间来让我学会再去做,希望各位高手谅解,对你们的无私帮助表示真心的感谢,谢谢。
问题开始
两个表,想要通过计算得到如下结果  (附件在最下面)
字段名    matnr    werks    lgort    waers    menge    meins    budat
        10000000   4000       1       CNY     520.00    ZHI    (取了一小段,所以此项数据不全)
        10000001   4000       1       CNY     38.00     ZHI     05/12/2014
        10000002   4000       1       CNY     350.00    ZHI     09/17/2014
        10000003   4000       1       CNY     4668.00   ZHI     08/16/2014
        10000005   4000       1       CNY     201.00    ZHI     05/04/2014
        10000006   4000       1       CNY     468.00    ZHI     07/13/2014
        10000007   4000       1       CNY     115.00    ZHI    (取了一小段,所以此项数据不全)
        10000008   4000       1       CNY     500.00    ZHI     09/17/2014
        10000008   4000       1       CNY     160.00    ZHI     06/11/2014
        10000011   2000       6       CNY     1400.00   ZHI     08/22/2014
        10000011   2000       6       CNY     5377.00   ZHI     08/15/2014
        10000012   2000       6       CNY     5100.00   ZHI    (取了一小段,所以此项数据不全)
        10000020   2000       5       CNY     50.00     ZHI    (取了一小段,所以此项数据不全)
我的计算逻辑:
条件:total.matnr=daytime.matnr and total.werks=daytime.werks and total.lgort=daytime.lgort;
用total.total自上而下去减daytime.menge的第一条记录,所得结果再去减daytime.menge的第二条记录,所得结果再去减第三条,第四条...如此循环;
判断:若daytime.No2=1且结果<=0,则取出daytime表中的该条记录并将对应daytime.menge字段值更新为total.total;
例如:mantr=10000001, daytime.No2=1,total.total-daytime.menge<0,则取出表daytime中的这条记录,并将daytime.menge字段值更新为38.00.
否则,取出daytime表中所有结果>0以及第一条结果<=0的记录,并将第一条结果<=0的记录的daytime.menge字段值更新为上一条记录所做减法的余数。
例如 matnr=10000008, 取出的是daytime表中daytime.No2=1,2这两条记录,并将daytime.No2=2的daytime.menge字段值更新为daytime.No2=1这条记录所做减法的余数160.00
注:
menge字段为数值型,No2字段为整形,其余为字符型。
Visual FoxPro 项目.rar (1.63 KB)


[ 本帖最后由 kinvanhon 于 2014-11-4 11:43 编辑 ]
搜索更多相关主题的帖子: 如何 如何 
2014-11-04 10:45
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
用total.total自上而下去减daytime.menge的第一条记录,所得结果再去减daytime.menge的第二条记录,

此段不明白,请详解!

坚守VFP最后的阵地
2014-11-04 11:14
kinvanhon
Rank: 5Rank: 5
来 自:战争学院
等 级:贵宾
威 望:16
帖 子:99
专家分:258
注 册:2014-10-7
收藏
得分:0 
回复 2 楼 sdta
就是先取出total.total字段的值,然后根据条件去做减法,例如
取出mantr=1000008 werks=4000 lgort=1字段total.total的值为660.00,然后用660.00自上往下依次做如下减法
对应表daytime
matnr     werks    lgort    menge       No2
10000008  4000     1        500.00      1   此步为660.00-500.00=160.00>0
10000008  4000     1        1000.00     2   此步为160.00-1000.00=(-840.00)<0(此项称为第一条<=0的记录,需要将menge字段值替换为上一步的余数160.00)
10000008  4000     1        800.00      3   此步为-840.00-800.00=...(该步仅为示范)

谢谢sdta~~
2014-11-04 11:31
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
还是看不明白

坚守VFP最后的阵地
2014-11-04 12:48
kinvanhon
Rank: 5Rank: 5
来 自:战争学院
等 级:贵宾
威 望:16
帖 子:99
专家分:258
注 册:2014-10-7
收藏
得分:0 
回复 4 楼 sdta
表达能力一直是我的弱项,那我不用表中的数据,随便假设一组数据来说明:
表 A
字段  matnr   total
       1        10
       2        5
表 B
字段  matnr   menge
       1        1   → 10-1=9
       1        2   → 9-2=7
       1        3   → 7-3=4
       1        4   → 4-4=0
       1        5   → 0-5=(-5)
       2        1   → 5-1=4
       2        3   → 4-3=1
       2        3   → 1-3=(-2)
       ……     ……
可能是我说了total字段减menge字段这句话误导了吧,实际上total字段值只是在第一次做减法时用到,而从第二个减法开始每个减法都是用前一个减法所得结果(减法里叫差,我好像说成了余数)当做被减数再去逐个减menge的值,再进行后面的判断。

[ 本帖最后由 kinvanhon 于 2014-11-4 13:28 编辑 ]
2014-11-04 13:20
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
表示木看明白
2014-11-04 15:03
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
规则挺复杂的

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2014-11-04 20:51
pufei6057
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2014-11-2
收藏
得分:0 
新手我也是 路过
2014-11-04 22:01
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
应该不难,但是表述很难理解,举例有错。

2        1   → 5-1=4
2        3   → 4-3=1        ??? 为什么是3
2        3   → 1-3=(-2)
2014-11-05 07:22
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用panpende在2014-11-5 07:22:48的发言:

应该不难,但是表述很难理解,举例有错。

2        1   → 5-1=4
2        3   → 4-3=1        ??? 为什么是3
2        3   → 1-3=(-2)

减数是第二列的数据

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2014-11-05 08:00
快速回复:纠结两天仍无果,只好再来请教如何写这样一个程序
数据加载中...
 
   



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

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