标题:求助:编一段小程序提示记录超出范围
只看楼主
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 18楼 sdta
妙,能解释一下吗?
2017-07-18 09:12
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
当班级数不固定时,只修改n的值即可,不用修改代码中的数值,可以减少错误的发生率

坚守VFP最后的阵地
2017-07-18 10:07
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
replace all bj with iif(mod(zmc-1,2*n)<n,mod(zmc-1,n)+1,n-mod(zmc-1,n))
这条代码中共有5处n,如果此处不是n而是具体的值,当班级数不固定时,是不是要一个个修改,如果不认真的话,有可能漏掉某一处的值没修改,用变量n的好处是,只要修改n的值,可以避免修改5个地方的值。

坚守VFP最后的阵地
2017-07-18 10:11
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 23楼 sdta
想请教mod里面的含义及原理,谢谢。
2017-07-18 10:38
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 16楼 吹水佬
根据16楼已解决记录超出问题,烦再请教在16楼基础上比如我想把前200名(当然不固定也可能是180名)分到实验班,剩下的人分到普通班,
如何加入一n变量,&&用男生测试写入可解决记录超出问题
sort on zf /d to tempnans for xb='男' &&男生临时数据库
&&sort on zf /d to tempnvs for xb='女' &&女生临时数据库
use
&&分男生
sele 1
use tempnans &&男生临时数据库

**n=1 &&设置记录定位变量,比如前200人分为4个班停止,剩下的人另分,
m=1 &&班数变量
 
GO TOP
do while not eof()
    && 正序
    m=1
        do while  not eof() and m<=6 &&最大班数
        repl bj with m
        m=m+1
        SKIP
        enddo
    &&倒序
    m=6
       do while  not eof() and m>=1
        repl bj with m
        m=m-1
        SKIP
        enddo
enddo
GO top
BROWSE
use目的是设置记录定位变量,可以通过控制n变量方便两次分配。比如前200人分为4个班停止,剩下的人另分,如何解决
2017-07-18 10:42
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
* 前200名,是指总成绩排名?还是你表的顺序?
* 用SQL语句生成吧,控制前200名方便点
* 假如你表名是 D:\TEST\表1.dbf
use D:\TEST\表1.dbf in 0
* 生成成绩排名的前200名,表是 D:\TEST\表1_Top200.dbf
select top 200 * from 表1 order by zf desc into table D:\TEST\表1_Top200.dbf
* 对前200名进行分班
select 表1_Top200
* 下面的就是你前面学会的代码了。
2017-07-18 10:56
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 26楼 mywisdom88
ok,谢谢
2017-07-18 11:13
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用chychychy在2017-7-18 11:13:43的发言:

ok,谢谢

select top 200 * from 表1 order by zf desc into table D:\TEST\表1_Top200.dbf
* Top 200 是前200
* order by zf desc 是用 zf 来排序,采用降序,也就最高的在第1位
* into table D:\TEST\表1_Top200.dbf 是生成1个新表表1_Top200.dbf,在 D:\TEST
* 如果生成临时表,可以用 into cursor 临时表名 readwrite,这样,这个临时表是可以修改的


2017-07-18 11:32



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




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

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