标题:求助:编一段小程序提示记录超出范围
只看楼主
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
结帖率:100%
已结贴  问题点数:20 回复次数:27 
求助:编一段小程序提示记录超出范围
ort on zf /d to tempnans for xb='' &&ú±
&&sort on zf /d to tempnvs for xb='' &&ú±
use
&&·ú
sele 1
use tempnans &&ú±
count to rs
n=1  &&
m=1  &&°à±
goto 1
do while not eof()
&&do while n<rs
    && ò
    m=1
    do while m<=6
        goto n
        repl bj with m
        m=m+1
        n=n+1
    enddo
    &&ò
    m=6
    do while m>=1
        goto n
        repl bj with m
        m=m-1
        n=n+1
        enddo
enddo
use
测试.rar (10.88 KB)
搜索更多相关主题的帖子: 记录 超出范围 goto do while 
2017-07-17 14:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:7 
记录数可知,GO命令可控。
2017-07-17 14:36
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:7 
sort on zf /d to tempnans for xb='男' &&男生临时数据库
&&sort on zf /d to tempnvs for xb='女' &&女生临时数据库
use
&&分男生
sele 1
clear
use tempnans &&男生临时数据库
count to rs
n=1  &&
m=1  &&班数变量
GO TOP

do while NOT eof()
   IF m>6
      m=1
   ENDIF
   repl bj with m
   m=m+1
   n=n+1
   SKIP 1
ENDDO
BROWSE

use

2017-07-17 14:55
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 2楼 吹水佬
新手,没看明白,另外请教,我这是测试男生,想123456 654321 排列,女生想反过来,654321 123456 排列,如何实现
2017-07-17 15:21
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 3楼 mywisdom88
这样测试不提示错误了,但是我是想男生123456 654321 排列,你这样排的结果都是 123456 123456 ,请教如何实现?
女生反过来654321 123456 排列,还没测试女生被拦住了,同时请教如何实现?
2017-07-17 15:23
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
把 do while ....enddo这段,改为。
* 123456,654321
 m=1
 add=1
 do while NOT eof()
    repl bj with m
    if add=1
       m=m+1
       if m>=7
          m=6
          add=0
       endif
    else
       m=m-1
       if m<=0
          m=1
          add=1
       endif
    endif
    SKIP 1
 ENDDO

[此贴子已经被作者于2017-7-17 16:05编辑过]

2017-07-17 16:03
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用chychychy在2017-7-17 15:21:06的发言:

新手,没看明白,另外请教,我这是测试男生,想123456 654321 排列,女生想反过来,654321 123456 排列,如何实现

不明白123456 654321 排列是什么意思。
是不是这样:
cDBF = "成绩统计原始稿(带性别) - 副本.dbf"
c男女 = "男"
*c男女 = "女"

    LOCAL i, aBJ[1]
    IF c男女=="男"
        ALINES(aBJ, "1,2,3,4,5,6,6,5,4,3,2,1", ",")
    ELSE
        ALINES(aBJ, "6,5,4,3,2,1,1,2,3,4,5,6", ",")
    ENDIF
    SELECT * FROM (cDBF) WHERE xb=c男女 ORDER BY zf DESC INTO CURSOR tempnans READWRITE
    SELECT tempnans
    i = 0
    SCAN
        i = IIF(i==12, 1, i+1)   
        REPLACE bj WITH VAL(aBJ[i])
    ENDSCAN
    GO top
    BROWSE

CLOSE DATABASES ALL
RETURN
2017-07-17 16:38
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 7楼 吹水佬
刚才没说明白,设想按性别和成绩均衡分班,假如分6个班,男生按成绩总分(zf)从高到低排列,班级依次为1 2 3 4 5 6, 6 5 4 3 2 1 ,123456,654321 循环,女生则为654321 123456 654321 123456 循环,同理4 个班 8个班 10个班都是如此。我测试小段程序一是提示超出记录范围,不知语句哪个地方错了,二是没想通女生的语句该如何。谢谢。
2017-07-17 17:45
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 6楼 mywisdom88
测试你这段代码,没有写入分班呀
2017-07-17 17:49
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 8楼 chychychy
男生分班在数据库中想这样如何根据成绩降序排列后写入班级
成绩名次    班级
1            1
2            2
3            3
4            4
5            5
6            6
7            6
8            5
9            4
10           3
11           2
12           1
13           1
2017-07-17 18:04



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




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

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