回 帖 发 新 帖 刷新版面

主题:一条简单而又难解决的VF问题

题目是找出表中年龄最大的记录号
     set talk off
     max=年龄
     j=reccount()
     fori=1 to j
        if max<年龄
        max=年龄
       endif
       skip
    endfor
    use
    ?rec
我的问题是我不明白程序里面的这几个程序:  max=年龄  ,if max<年龄 max=年龄。你能帮我解答一下吗
其中年龄是数值型变量了,请哪位扫盲心人士解答一下,谢谢 
         

回复列表 (共16个回复)

11 楼

补充问题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 楼

这个题目估计是让你学习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 楼

我认为这个问题应该这样理解:
第一步求出最大年龄(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 楼

可这样吧
s=0
do while !eof()
    s=MAX(s,年龄)
    SKIP
ENDdo
set filter to 年龄=s
go top
brow

    

15 楼

select max(年龄),recn() as record from 表

16 楼

很简单的题目:

SELECT MAX(年龄) FROM 表名 INTO ARRAY Age
SELECT 表名所在的工作区  &&SELECT-SQL语句会自动打开相关表
LOCATE FOR 年龄=Age(1,1)
记录号=RECNO()
?"年龄最大的记录是:", 记录号

我来回复

您尚未登录,请登录后再回复。点此登录或注册