标题:请各位帮我解答一下这条程序的运行结果
只看楼主
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:4 
create TABLE c:\xsk(xh c(8),xm c(8),xb c(2),csrq d)
insert into xsk(xh,xm,xb,csrq) values('20020101','李小飞','男',{^1982-07-08})
insert into xsk(xh,xm,xb,csrq) values('20020201','王美英','女',{^1983-05-01})
insert into xsk(xh,xm,xb,csrq) values('20020102','张欣','女',{^1983-09-20})
insert into xsk(xh,xm,xb,csrq) values('20020303','王小平','男',{^1984-08-06})
insert into xsk(xh,xm,xb,csrq) values('20020204','赵丽娟','女',{^1981-08-01})
insert into xsk(xh,xm,xb,csrq) values('20020301','高军','男',{^1983-10-25})
BROWSE
use
set talk off
clear
dimension a(2)
use c:\xsk excl in 0
brow
?xh,xm,xb,'use'
index on xm to ixm
brow
?xh,xm,xb,'index'
go 3
?xh,xm,xb,'go 3'
SKIP
?xh,xm,xb,'skip'
scatter to a
?xh,xm,xb,'scatter'
go top
?xh,xm,xb,'go top'
gather from a
?xh,xm,xb,'gather'
use
set talk on
return
我测试结果是 ,赵丽娟,可能和排序有关系
CREATE前的排序为

INDEX的排序为

运行结果

2016-06-29 09:11
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
总结,是不是运行 gather命令后,指针就到最后,赵丽娟是index后的最后记录
2016-06-29 09:13
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
2016-06-29 09:27
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
clear
create TABLE c:\xsk(xh c(8),xm c(8),xb c(2),csrq d)
insert into xsk(xh,xm,xb,csrq) values('20020101','李小飞','',{^1982-07-08})
insert into xsk(xh,xm,xb,csrq) values('20020201','王美英','',{^1983-05-01})
insert into xsk(xh,xm,xb,csrq) values('20020102','张欣','',{^1983-09-20})
insert into xsk(xh,xm,xb,csrq) values('20020303','王小平','',{^1984-08-06})
insert into xsk(xh,xm,xb,csrq) values('20020204','赵丽娟','',{^1981-08-01})
insert into xsk(xh,xm,xb,csrq) values('20020301','高军','',{^1983-10-25})
* 索引前记录显示的是物理顺序
?" 索引前记录显示 "
list
go 3
?xm,recno()
SKIP
?xm,recno()
index on xm to ixm
* 索引后记录显示的数据是逻辑顺序,不是物理顺序
?" 索引后记录显示 "
list
?
?"-----------------------------"
go 3 && 指的是物理顺序
?xm,recno()
skip && 相对于前一条记录而言
?xm,recno()

运行上述代码,就知道正确结果是什么了

[此贴子已经被作者于2016-6-29 09:44编辑过]


坚守VFP最后的阵地
2016-06-29 09:43
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用sdta在2016-6-29 09:43:18的发言:

clear
create TABLE c:\xsk(xh c(8),xm c(8),xb c(2),csrq d)
insert into xsk(xh,xm,xb,csrq) values('20020101','李小飞','男',{^1982-07-08})
insert into xsk(xh,xm,xb,csrq) values('20020201','王美英','女',{^1983-05-01})
insert into xsk(xh,xm,xb,csrq) values('20020102','张欣','女',{^1983-09-20})
insert into xsk(xh,xm,xb,csrq) values('20020303','王小平','男',{^1984-08-06})
insert into xsk(xh,xm,xb,csrq) values('20020204','赵丽娟','女',{^1981-08-01})
insert into xsk(xh,xm,xb,csrq) values('20020301','高军','男',{^1983-10-25})
* 索引前记录显示的是物理顺序
?" 索引前记录显示 "
list
go 3
?xm,recno()
SKIP
?xm,recno()
index on xm to ixm
* 索引后记录显示的数据是逻辑顺序,不是物理顺序
?" 索引后记录显示 "
list
?
?"-----------------------------"
go 3 && 指的是物理顺序
?xm,recno()
skip && 相对于前一条记录而言
?xm,recno()
运行上述代码,就知道正确结果是什么了


出这个题的人,是不是有点神经病,如果是上机的话,应该可以;但如果是笔试,我相信,没几个人能排出 INDEX后的顺序来。
2016-06-29 13:40
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
啊,没有仔细看其中还有排序命令,回帖错了,抱歉!

活到老,学到老! http://www. E-mail:hu-jj@
2016-06-30 07:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466428-1-1.html




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

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