主题:一条简单而又难解决的VF问题
hngnba
[专家分:0] 发布于 2011-12-01 11:26:00
题目是找出表中年龄最大的记录号
set talk off
max=年龄
j=reccount()
fori=1 to j
if max<年龄
max=年龄
endif
skip
endfor
use
?rec
我的问题是我不明白程序里面的这几个程序: max=年龄 ,if max<年龄 max=年龄。你能帮我解答一下吗
其中年龄是数值型变量了,请哪位扫盲心人士解答一下,谢谢
回复列表 (共16个回复)
11 楼
hngnba [专家分:0] 发布于 2011-12-03 23:35:00
补充问题3:假如我有一个表的年龄值从第一个到第四个(在同一列从上到下顺序)分别是90,30,67,100的话,而我的这几句程序是:
set talk off
use nl &某个表名
max=年龄
j=reccount()
fori=1 to j
if max<年龄
max=年龄
res=recno()
endif
skip
endfor
use
? res
,当程序运行时到第一个max=年龄,这个年龄会自动捕捉到它被赋的值是90,一直到最后,显示的RES的值是4,是这样理解吗?
12 楼
lbscyb [专家分:4780] 发布于 2011-12-20 00:18:00
这个题目估计是让你学习for 循环
至于找最大数,select max(年龄) from ... 就搞定
在差,用scan 循环都比这个好
-----------------------------------------
补充问题3:假如我有一个表的年龄值从第一个到第四个(在同一列从上到下顺序)分别是90,30,67,100的话,而我的这几句程序是:
set talk off
use nl &某个表名
max=年龄
j=reccount()
fori=1 to j
if max<年龄
max=年龄
res=recno()
endif
skip
endfor
use
? res
,当程序运行时到第一个max=年龄,这个年龄会自动捕捉到它被赋的值是90,一直到最后,显示的RES的值是4,是这样理解吗?
max=年龄 是指向当前记录的字段值,当记录指针发生改变时,值当然要变了
13 楼
lygcw9603 [专家分:250] 发布于 2012-01-27 04:00:00
我认为这个问题应该这样理解:
第一步求出最大年龄(NL)
CALCULATE MAX(年龄) TO NL
第二步判断最大年龄是不是就一个
COUNT FOR 年龄==NL TO JS
IF JS=1
LOCATE FOR 年龄==NL
? RECNO()
ELSE &&如果JS>1,就要查出所有最大年龄对应的记录号
FOR I=1 TO JS
LOCATE FOR 年龄==NL
? I,RECNO()
ENDFOR
ENDIF
不知这样理解是否正确
14 楼
jiafangliang [专家分:0] 发布于 2012-02-07 21:35:00
可这样吧
s=0
do while !eof()
s=MAX(s,年龄)
SKIP
ENDdo
set filter to 年龄=s
go top
brow
15 楼
jch_168 [专家分:0] 发布于 2012-02-08 14:39:00
select max(年龄),recn() as record from 表
16 楼
taifu945 [专家分:240] 发布于 2012-03-29 20:10:00
很简单的题目:
SELECT MAX(年龄) FROM 表名 INTO ARRAY Age
SELECT 表名所在的工作区 &&SELECT-SQL语句会自动打开相关表
LOCATE FOR 年龄=Age(1,1)
记录号=RECNO()
?"年龄最大的记录是:", 记录号
我来回复