| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 656 人关注过本帖
标题:求助:怎么将考场信息表高效整理成考场科目清单,格式如表
只看楼主 加入收藏
yangdf
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2022-2-6
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:6 
求助:怎么将考场信息表高效整理成考场科目清单,格式如表
现有考场信息表,包含考点名称、考点代码、科目、考场号、座号,现需要统计整理成考场科目清单,之前都是Excel表格手工整理,考点多的时候效率非常低,能否帮助用vfp程序代码实现。
附表.zip (1.36 KB)

效果:
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 代码 效率 信息 格式 vfp 
2023-06-04 11:38
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
英语科目001-002共两个考场60人,1楼只有30人是什么意思

坚守VFP最后的阵地
2023-06-04 14:15
yangdf
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2022-2-6
收藏
得分:0 
回复 2楼 sdta
指的是001考场、002考场的30人都是这个科目,这个段内的考场不涉及多个科目。
2023-06-04 15:24
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:20 
程序代码:
CLOSE DATABASES 
CREATE CURSOR kckmqd (考点代码 c(4), 考点名称 c(20), 考场号 c(3), 座号 c(10), 人数 n(2), 科目 c(8))
INDEX ON 考点代码 + 考点名称 + 考场号 + 科目 TAG kcxx
SELECT kddm, kdmc, SUBSTR(ALLTRIM(kch),5,3) kch, zh, km FROM 考场信息表 INTO CURSOR kcxxb
SCAN 
    IF SEEK(kcxxb.kddm + kcxxb.kdmc + kcxxb.kch + kcxxb.km, "kckmqd", "kcxx") = .F.
        INSERT INTO kckmqd (考点代码, 考点名称, 考场号, 科目) VALUES (kcxxb.kddm, kcxxb.kdmc, kcxxb.kch, kcxxb.km)
    ENDIF 
    REPLACE 座号 WITH IIF(EMPTY(座号), SPACE(0), LEFT(座号, 2) + "-") + PADL(kcxxb.zh, 2, "0"), 人数 WITH 人数 + 1 IN kckmqd
ENDSCAN
SELECT kckmqd
SET ORDER TO 
BROWSE 

结果:
图片附件: 游客没有浏览图片的权限,请 登录注册

坚守VFP最后的阵地
2023-06-04 15:35
yangdf
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2022-2-6
收藏
得分:0 
回复 4楼 sdta
感谢版主
2023-06-04 17:37
yangdf
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2022-2-6
收藏(1)
得分:0 
程序代码:
        CLOSE DATABASES 
        CREATE CURSOR kckmqd (考点代码 c(4), 考点名称 c(20), 考场号 c(3), 座号区间 c(5), 人数 n(2), 科目 c(8))
        INDEX ON 考点代码 + 考点名称 + 考场号 + 科目 TAG kcxx
        SELECT kddm, kdmc, SUBSTR(ALLTRIM(kch),5,3) kch, zh, km FROM 考场信息表 INTO CURSOR kcxxb
        SCAN 
            IF SEEK(kcxxb.kddm + kcxxb.kdmc + kcxxb.kch + kcxxb.km, "kckmqd", "kcxx") = .F.
                INSERT INTO kckmqd (考点代码, 考点名称, 考场号, 科目) VALUES (kcxxb.kddm, kcxxb.kdmc, kcxxb.kch, kcxxb.km)
            ENDIF 
            REPLACE 座号区间 WITH IIF(EMPTY(座号区间), SPACE(0), LEFT(座号区间, 2) + "-") + PADL(kcxxb.zh, 2, "0"), 人数 WITH 人数 + 1 IN kckmqd
        ENDSCAN
        SELECT kckmqd
        SET ORDER TO   &&取消索引后,默认按照考点、考场号、座号区间排序。

*--* 第二阶段:对考场科目清单“考点相同、科目相同、考场连续满场”的继续整理,减少数据行        
        CREATE CURSOR kckmqdhz (考点代码 c(4), 考点名称 c(20), 考场区间 c(7), 座号区间 c(5), 场内人数 n(2), 科目 c(8))
        SELECT kckmqd
        SCAN 
            IF kckmqdhz.考点代码 == kckmqd.考点代码 AND kckmqd.座号区间 == "01-30" AND kckmqdhz.场内人数 = 30 AND kckmqdhz.科目 == kckmqd.科目
                REPLACE kckmqdhz.考场区间 WITH LEFT(kckmqdhz.考场区间 ,3) + "-" +kckmqd.考场号 IN kckmqdhz
            ELSE
                INSERT INTO kckmqdhz(考点代码, 考点名称, 考场区间, 座号区间, 场内人数, 科目) VALUES (kckmqd.考点代码, kckmqd.考点名称, kckmqd.考场号, kckmqd.座号区间, kckmqd.人数, kckmqd.科目)
            ENDIF
        ENDSCAN
        SELECT kckmqdhz
        BROWSE
            
                
               
2023-06-09 09:50
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
以下是引用yangdf在2023-6-9 09:50:09的发言:

        CLOSE DATABASES
        CREATE CURSOR kckmqd (考点代码 c(4), 考点名称 c(20), 考场号 c(3), 座号区间 c(5), 人数 n(2), 科目 c(8))
        INDEX ON 考点代码 + 考点名称 + 考场号 + 科目 TAG kcxx
        SELECT kddm, kdmc, SUBSTR(ALLTRIM(kch),5,3) kch, zh, km FROM 考场信息表 INTO CURSOR kcxxb
        SCAN
            IF SEEK(kcxxb.kddm + kcxxb.kdmc + kcxxb.kch + kcxxb.km, "kckmqd", "kcxx") = .F.
                INSERT INTO kckmqd (考点代码, 考点名称, 考场号, 科目) VALUES (kcxxb.kddm, kcxxb.kdmc, kcxxb.kch, kcxxb.km)
            ENDIF
            REPLACE 座号区间 WITH IIF(EMPTY(座号区间), SPACE(0), LEFT(座号区间, 2) + "-") + PADL(kcxxb.zh, 2, "0"), 人数 WITH 人数 + 1 IN kckmqd
        ENDSCAN
        SELECT kckmqd
        SET ORDER TO   &&取消索引后,默认按照考点、考场号、座号区间排序。

*--* 第二阶段:对考场科目清单“考点相同、科目相同、考场连续满场”的继续整理,减少数据行        
        CREATE CURSOR kckmqdhz (考点代码 c(4), 考点名称 c(20), 考场区间 c(7), 座号区间 c(5), 场内人数 n(2), 科目 c(8))
        SELECT kckmqd
        SCAN
            IF kckmqdhz.考点代码 == kckmqd.考点代码 AND kckmqd.座号区间 == "01-30" AND kckmqdhz.场内人数 = 30 AND kckmqdhz.科目 == kckmqd.科目
                REPLACE kckmqdhz.考场区间 WITH LEFT(kckmqdhz.考场区间 ,3) + "-" +kckmqd.考场号 IN kckmqdhz
            ELSE
                INSERT INTO kckmqdhz(考点代码, 考点名称, 考场区间, 座号区间, 场内人数, 科目) VALUES (kckmqd.考点代码, kckmqd.考点名称, kckmqd.考场号, kckmqd.座号区间, kckmqd.人数, kckmqd.科目)
            ENDIF
        ENDSCAN
        SELECT kckmqdhz
        BROWSE
            
                              

第二阶段代码处理的很好,向楼主学习

坚守VFP最后的阵地
2023-06-09 20:50
快速回复:求助:怎么将考场信息表高效整理成考场科目清单,格式如表
数据加载中...
 
   



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

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