| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 749 人关注过本帖, 1 人收藏
标题:同一字段两行记录相减,如何实现?
只看楼主 加入收藏
cew1975
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-7-11
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:8 
同一字段两行记录相减,如何实现?
同一字段里的数据,如何实现下一行记录的数据减上一行记录的数据,结果放查询表里。能用表达式实现吗?
请高手指点。
搜索更多相关主题的帖子: 表达式 记录 如何 
2013-07-11 15:06
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:4 
直接运算可能有点难度,建议通过变量(或者数组变量)来实现。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2013-07-11 15:32
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9842
专家分:27213
注 册:2012-2-5
收藏
得分:4 
程序代码:
CREATE CURSOR T (A N(2),B N(2))
FOR I=1 TO 10
    INSERT INTO T (A) VALUES (I)
ENDFOR
SELECT A,RECNO()+1 JLH FROM T WHERE RECNO()<RECCOUNT() INTO CURSOR TT
SCAN
   UPDATE T SET B=A-TT.A WHERE RECNO([T])=TT.JLH
ENDSCAN
SELECT T
BROWSE
图片附件: 游客没有浏览图片的权限,请 登录注册

坚守VFP最后的阵地
2013-07-11 18:07
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9842
专家分:27213
注 册:2012-2-5
收藏
得分:0 
VFP9代码
UPDATE T SET B=T.A-A.A FROM (SELECT A,RECNO()+1 JLH FROM T WHERE RECNO()<RECCOUNT()) A WHERE RECNO([T])=A.JLH

生成查询表:
SELECT A.A,NVL(A.A-B.A,0) 结果 FROM (SELECT A,RECNO() JLH FROM T ) A LEFT JOIN (SELECT A,RECNO()+1 JLH ;
FROM T WHERE RECNO()<RECCOUNT()) B ON A.JLH=B.JLH


[ 本帖最后由 sdta 于 2013-7-11 18:23 编辑 ]

坚守VFP最后的阵地
2013-07-11 18:10
cew1975
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-7-11
收藏
得分:0 
太感谢版主了!!!够自己消化一阵了。
2013-07-12 00:18
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:4 
代码中 WHERE RECNO([T])=A.JLH  的RECNO([T])的[T]表示什么?


用wait
 ?RECNO([T])为什么是10?

[ 本帖最后由 sylknb 于 2013-7-15 10:52 编辑 ]
2013-07-15 10:39
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:4 
T.RECNO()
2013-07-15 11:23
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
为什么T.RECNO() 程序运行错,找不到对象T
2013-07-15 11:48
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:4 
楼上的,你没搞清楚几个概念,建议你去看一下帮助文件。

RECNO()是FoxPro内置的普通函数,正确用法是“RECNO(工作区号/工作表别名)”。其中,若用“工作区号”,则直接写表文件所在的区号,无需引号括起;用工作表别名,则必须以字符串的形式。FoxPro中,字符串可以用英文半角双引号/单引号/中括号括起,三者选一即可。4楼代码中使用的是第三种,即,用中括号括起工作表别名—T。如果同时省略工作区号和工作表别名,则返回当前工作区中表文件的当前记录号。

“名称.程序名”多用在表单中。其中,“名称”是指控件、容器、表单的名字,控件、容器、表单被统称为“对象”。“程序名”是指这些对象自己所带的事件或方法程序的名字,比如:Text1.InteractiveChange。普通函数名无需且不能使用这种格式。搞懂了这些,就知道为什么你的“T.RECNO()”会被FoxPro报成“找不到对象T”了。
2013-07-15 12:02
快速回复:同一字段两行记录相减,如何实现?
数据加载中...
 
   



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

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