注册 登录
编程论坛 VFP论坛

多表数据查询统计生成每个教师课时总量表文件

王咸美 发布于 3 天前 09:56, 714 次点击
现有各班教师任课表jsrkb20190101.dbf、课时计划表ksjh.dbf、学科系数表xkxs.dbf、各班生数表gbss.dbf。由这四个表生成每个教师课时总量表文件kszl.dbf,包含字段:序号 I,姓名  c(6),具体课务 c(150),总课时 n (4),课时总量 n(5,2)
学科课时量=班级生数系数*学科系数*每个学科课时数
课时总量等于每个人任教各学科课时量总和
班级生数系数以45人为标准系数1,每增加或减少1人,增加或减少0.02,以些类推。
以上设想能否实现?请高手赐教,万分感谢!!!
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2025-4-23 12:17编辑过]

13 回复
#2
schtg3 天前 13:20
回复 楼主 王咸美
不是是否是这个意思?
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
#3
王咸美3 天前 13:53
首先表示感谢! 不是这个意思。
结果样式如下:
序号   姓名     具体课务               总课时    课时总量
1     曹文亮   一(2)美术,四(3)品社    4        4.28

[此贴子已经被作者于2025-4-23 14:09编辑过]

#4
schtg3 天前 16:43
回复 3楼 王咸美
有前表,转化为后表就不复杂啦,是这样的?
只有本站会员才能查看附件,请 登录



[此贴子已经被作者于2025-4-23 20:10编辑过]

#5
王咸美3 天前 17:03
谢谢!但不够准确,有不少人课务漏了。

[此贴子已经被作者于2025-4-23 17:12编辑过]

#6
schtg3 天前 20:10
回复 5楼 王咸美
仅测试了一下,确定格式正确后,连接对应数据即可,不知这下理解对了没
若不对的话,不纠结这个啦,请你修改咯
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录





[此贴子已经被作者于2025-4-23 20:12编辑过]

#7
王咸美3 天前 21:21
衷心感谢你的付出!验证了前两位老师,对的!能提供具体代码供学习吗?
#8
wengjl前天 10:55
只有本站会员才能查看附件,请 登录

***************
* 问题来源:https://bbs.bc-cn.net/thread-514284-1-1.html
* 规则:现有课务分工表kwfg.dbf、课时计划表ksjh.dbf、学科系数表xkxs.dbf、各班生数表gbrs.dbf。
*       由这四个表生成每个教师课时总量表文件kszl.dbf,包含字段:序号 I,姓名  c(6),具体课务 c(150),总课时 n (4),课时总量 n(5,2)
*       学科课时量=班级生数系数*学科系数*每个学科课时数
*       课时总量等于每个人任教各学科课时量总和
*       班级生数系数以45人为标准系数1,每增加或减少1人,增加或减少0.02,以些类推。
*       以上设想能否实现?请高手赐教,万分感谢!!!
* 思路:
*
* 时间:2025-4-24 星期四
***************
     CLEAR
     CLEAR ALL
     SET SAFETY off
     SET engi 70
     SET CPCOMPILE TO 936 &&&
     CLOSE DATABASES      
     CREATE TABLE gzlmx(xm c(6),nj c(6),bj c(7),xsrs n(3),xsxs n(4,2),km c(6),rkjs n(2),ksxs n(4,1),kszl n(6,2))
     CLOSE DATABASES
     USE gzlmx alia mx
     SELECT 0
     USE gbrs alia rs
     SELECT 0
     USE kwfg alia kw
     SELECT 0
     USE xkxs alia xk
     SELECT 0
     USE ksjh alia jh
     SELECT kw
     zds=FCOUNT()
     FOR i=3 to zds
       GO top
       SCAN
         zdm=FIELD(i)
         SELECT mx
         APPEND BLANK
         REPLACE mx.xm with EVALUATE([kw.]+zdm)
         REPLACE mx.nj with kw.nj
         REPLACE mx.bj with kw.bj
         REPLACE mx.km with zdm
         SELECT kw
       ENDSCAN
     ENDFOR
     SELECT mx
     DELETE FOR EMPTY(xm)
     PACK
     *---
     SELECT mx
     GO top
     SCAN
       kmmc=ALLTRIM(mx.km)
       SELECT rs
       LOCATE for rs.nj=mx.nj and rs.bj=mx.bj
       IF FOUND()
         REPLACE mx.xsrs with rs.生数
       ENDIF
       SELECT jh
       LOCATE for jh.nj=mx.nj
       IF FOUND()
         REPLACE mx.rkjs with EVALUATE([jh.]+kmmc)
       ENDIF
       SELECT xk
       LOCATE for xk.nj=mx.nj
       IF FOUND()
         REPLACE mx.ksxs with EVALUATE([xk.]+kmmc)
       ENDIF
       SELECT mx
     ENDSCAN
     *---
     SELECT mx
     REPLACE xsxs with 1+(xsrs-45)*0.02 all
     REPLACE kszl with xsxs*rkjs*ksxs all
     *---
     CLOSE DATABASES
     SELECT xm,SPACE(200) as kwmc,sum(rkjs) as zks,sum(kszl) as zksl from gzlmx grou by xm into table kszl
     CLOSE DATABASES
     USE kszl alia bmk      
     SELECT 0
     USE gzlmx alia kg
     SELECT bmk
     SCAN
       _xm=ALLTRIM(bmk.xm)
       _rjkw=""
       SELECT kg
       GO top
       SCAN
         IF ALLTRIM(kg.xm)=_xm
           _rjkw=_rjkw+kg.nj+kg.bj+ALLTRIM(kg.km)+[;]
         ENDIF
         SELECT kg
       ENDSCAN
       SELECT bmk
       REPLACE bmk.kwmc with _rjkw      
     ENDSCAN
     MESSAGEBOX('教师课时工作量统计完成 !',64,'提示:')
     CLOSE DATABASES
     QUIT

写不出更简的,仅供王老师参考 !
#9
wengjl前天 11:06
补一下思路:

       第一步将课务分工表中的每一个教师姓名转为一条记录,同一教师任多少个班(课)就有多少条记录;

       第二步提取教师所任课的节数和所在班的学生人数,按规则计算出课时量;

       第三步进行分类汇总,按教师合计课时量,再将所任的学科内容转换为一单元格的内容进行记录;
#10
王咸美前天 11:11
谢谢!非常感谢!!!
#11
schtg前天 11:48
回复 7楼 王咸美
源代码在下面网址页面的第2楼,sdta的杰作:
https://bbs.bc-/viewthread.php?tid=505077&highlight=%B7%D6%B9%A4
#12
王咸美前天 13:16
谢谢!非常感谢!!!
#13
王咸美前天 16:47
@schtg 你告知我的页面代码不是我要的结果,我要的是满足我所提要求的每个教师的课时总量,不仅仅是课时数。
#14
王咸美6 小时前
@wengji 程序生成的总课时数与总课时量不够准确,从任教一二年级的老师中可以看出。
1