| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 876 人关注过本帖
标题:请教 :根据记录号顺序每4个记 录号产生流水号1,2,3,4,依次循环
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:11 
请教 :根据记录号顺序每4个记 录号产生流水号1,2,3,4,依次循环
根据记录号顺序每4个记 录号产生流水号1,2,3,4,依次循环
如下表示:
记录号  顺序号

1  --> 1
2  --> 2
3  --> 3
4  --> 4
5  --> 1
6  --> 2
7 -->  3
8  --> 4
9  --> 1
10 --> 2
11 --> 3
12 --> 4
。。。。
这个算式如何生成?请行家指教
搜索更多相关主题的帖子: 流水号 记录 如何 
2015-07-23 15:08
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
n = recno() % 4
if n == 0
   n = 4
endif
2015-07-23 15:15
沙枣
Rank: 4
来 自:宁夏银川
等 级:业余侠客
威 望:5
帖 子:103
专家分:221
注 册:2015-5-31
收藏
得分:0 
回复 楼主 sylknb
处理你提出的个性化问题不难,可参考如下代码:

go top
do while .not.eof()
replace 顺序号 with 1
if .not.eof()
skip
replace 顺序号 with 2
endif
if .not.eof()
skip
replace 顺序号 with 3
endif
if .not.eof()
skip
replace 顺序号 with 4
endif
if .not.eof()
skip
endif
enddo
return
2015-07-23 15:15
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
CREATE CURSOR dd (f1 I)
FOR i = 1 TO 100
    APPEND BLANK
ENDFOR
REPLACE f1 WITH IIF(RECNO()%4==0, 4, RECNO()%4) ALL
GO TOP
BROWSE
2015-07-23 15:19
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
吹水佬:
谢谢,我一下子糊了,怎么没有想到?
2015-07-23 15:34
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
现有一表如下结构
示意图:
 考号    课目  记录号(recno())   顺序号(待产生的)               
150001     01     1              -->1
150001     02     2               ->2
150001     03     3              -->3
----------------------------------------
150002    02      4             -> 1
150002    04      5              ->2
-------------------------------------------
150003     01     6             - >1
150003     02     7             -->2
150003     03     8            --> 3
150003     04     9             -->4
-------------------------------------------
150004     01     10            --> 1

它的结构是一个考生有相同的N个考号,考了不同的课科,原来呆办法是根据不同的重复考号(2个重复,3个重复,4个重复)生成不同的表,然后分别用
REPLACE f1 WITH IIF(RECNO()%2==0, 2, RECNO()%2) ALL
REPLACE f1 WITH IIF(RECNO()%3==0, 3, RECNO()%3) ALL
REPLACE f1 WITH IIF(RECNO()%4==0, 4, RECNO()%4) ALL
再一个个追加起来。
有没有办法一次性根据考号分组(2个重复,3个重复,4个重复)在本组中产生序号?



[ 本帖最后由 sylknb 于 2015-7-24 12:30 编辑 ]
2015-07-24 12:24
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
遍历表一次,按考号分组编号(顺序号),每组第一条记录的编号初始化为1,是这个意思吧?
2015-07-24 14:14
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用吹水佬在2015-7-24 14:14:01的发言:

遍历表一次,按考号分组编号(顺序号),每组第一条记录的编号初始化为1,是这个意思吧?
是这个意思
2015-07-24 14:32
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:20 
程序代码:
CREATE CURSOR 表 (考号 C(6), 课目 C(2), 记录号 I, 顺序号 I)
INSERT INTOVALUES ("150001", "01", 1, 0)
INSERT INTOVALUES ("150001", "02", 2, 0)
INSERT INTOVALUES ("150001", "03", 3, 0)
INSERT INTOVALUES ("150002", "02", 4, 0)
INSERT INTOVALUES ("150002", "04", 5, 0)
INSERT INTOVALUES ("150003", "01", 6, 0)
INSERT INTOVALUES ("150003", "02", 7, 0)
INSERT INTOVALUES ("150003", "03", 8, 0)
INSERT INTOVALUES ("150003", "04", 9, 0)
INSERT INTOVALUES ("150004", "01", 10, 0)

c考号 = ""
n顺序号 = 0
SCAN 
    IF 考号 == c考号
        n顺序号 = n顺序号 + 1
    ELSE
        c考号 = 考号
        n顺序号 = 1
    ENDIF
    REPLACE 顺序号 WITH n顺序号
ENDSCAN

GO TOP 
BROWSE


[ 本帖最后由 吹水佬 于 2015-7-24 14:46 编辑 ]
2015-07-24 14:45
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
提问题一定要一步到位,否则影响大家的时间

坚守VFP最后的阵地
2015-07-24 19:39
快速回复:请教 :根据记录号顺序每4个记 录号产生流水号1,2,3,4,依次循环
数据加载中...
 
   



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

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