标题:求助:如何自动填写适用年级字段?
只看楼主
lbjdyx
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-12-2
 问题点数:0 回复次数:13 
求助:如何自动填写适用年级字段?
pyfa.rar (3.43 KB)
各位老师好,我现在有一个难题,想自动按一定条件填写适用年级字段,请大家帮忙想一解决办法。培养方案表中专业名称字段有40多个专业,同一专业方案版本不同,想实现这样功能:一年级学生是2013级,二年级学生是2012级……,5年级学生2009级,开课学期分别是1,3,5,7,9学期,想在适用年级字段填上所在年级(2013,2012等),并且方案版本为最新的版本(比如财务管理专业2010级的学生只能适用2010版本,如果没有2010版本,有2009版本就用2009版本,2012级的适用2012版本,2011级的适用2011版本,如果没有2011版本如果有2010和2009版本就用2010版本,不能用2009版本)。
简单的说,就是2013级的学生上开课学期是1的课,2012级的上第3学期的课……,并且培养方案版本是最新的(和自己年级最近的)。谢谢大家!
搜索更多相关主题的帖子: 专业 2012 如何 
2013-04-18 23:52
djszyyc
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-3-17
得分:0 
javascript:insertText('26','em');
2013-04-18 23:57
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
是不是应该有年级字段?

坚守VFP最后的阵地
2013-04-19 00:26
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
写一段程序,通过条件判断来给字段赋值。

活到老,学到老! http://www. E-mail:hu-jj@
2013-04-19 08:13
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
以下是引用djszyyc在2013-4-18 23:57:45的发言:

javascript:insertText('26','em');
请教这是什么?

活到老,学到老! http://www. E-mail:hu-jj@
2013-04-19 08:13
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:0 
楼主,是要达到这种效果么?(以2013级为例)

如果是的话,各年级代码如下:
2013级:
UPDATE Pyfa SET 适用年级='2013' ;
   WHERE 专业名称+方案版本+课程名称 IN ;
      (SELECT MAX(专业名称+方案版本+课程名称) FROM Pyfa ;
          GROUP BY 专业名称,课程名称 ;
          WHERE ALLTRIM(开课学期)=[1] AND ALLTRIM(方案版本)<=[2013])
2012级:
UPDATE Pyfa SET 适用年级='2012' ;
   WHERE 专业名称+方案版本+课程名称 IN ;
      (SELECT MAX(专业名称+方案版本+课程名称) FROM Pyfa ;
          GROUP BY 专业名称,课程名称 ;
          WHERE ALLTRIM(开课学期)=[3] AND ALLTRIM(方案版本)<=[2012])
2011级:
UPDATE Pyfa SET 适用年级='2011' ;
   WHERE 专业名称+方案版本+课程名称 IN ;
      (SELECT MAX(专业名称+方案版本+课程名称) FROM Pyfa ;
          GROUP BY 专业名称,课程名称 ;
          WHERE ALLTRIM(开课学期)=[5] AND ALLTRIM(方案版本)<=[2011])
2010级:
UPDATE Pyfa SET 适用年级='2010' ;
   WHERE 专业名称+方案版本+课程名称 IN ;
      (SELECT MAX(专业名称+方案版本+课程名称) FROM Pyfa ;
          GROUP BY 专业名称,课程名称 ;
          WHERE ALLTRIM(开课学期)=[7] AND ALLTRIM(方案版本)<=[2010])
2009级:
UPDATE Pyfa SET 适用年级='2009' ;
   WHERE 专业名称+方案版本+课程名称 IN ;
      (SELECT MAX(专业名称+方案版本+课程名称) FROM Pyfa ;
          GROUP BY 专业名称,课程名称 ;
          WHERE ALLTRIM(开课学期)=[9] AND ALLTRIM(方案版本)<=[2009])  &&不过你上传的表中貌似没有第9学期的课

给楼主一个建议:开课学期最多只要2位,没必要弄得那么长。另外,有些课程名称一样的,但课号不同,不知道是否因为学分数不同等原因导致课号的变化,还是虽然名称一样,但根本是两门课?我给出的解决方案是当作第一种情况的,因为这种情况相对多些。如果是第二种情况,把代码中所有的“课程名称”改成“课程代码”。如果一个表中的课程兼有两种情况,那就无法仅从现有字段判断了,需要另外加一个标志字段。从你理论课时、实验课时两字段来看,我判断是第一种情况。


[ 本帖最后由 taifu945 于 2013-4-19 09:27 编辑 ]
2013-04-19 08:32
lbjdyx
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-12-2
得分:0 
回复 6楼 taifu945
谢谢taifu945!就是这个效果。SELECT MAX(专业名称+方案版本+课程名称) FROM Pyfa ;
           GROUP BY 专业名称,课程名称 ;
           WHERE ALLTRIM(开课学期)=[9] AND ALLTRIM(方案版本)<=[2009]
能给解释写这个语句的思路吗?谢谢你!
2013-04-19 11:07
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:0 
以下是引用lbjdyx在2013-4-19 11:07:29的发言:

谢谢taifu945!就是这个效果。SELECT MAX(专业名称+方案版本+课程名称) FROM Pyfa ;
           GROUP BY 专业名称,课程名称 ;
           WHERE ALLTRIM(开课学期)=[9] AND ALLTRIM(方案版本)<=[2009]
能给解释写这个语句的思路吗?谢谢你!
对于同一个专业的同一门课来说,有不同的方案版本,所以要对专业名称和课程名称进行分组(GROUP BY子句的功能)。分组后,就要考虑从每组筛选出最新方案。所谓最新方案就是指版本所代表的年度最靠后,也就是年度值最大。所以要用聚集函数MAX()来挑选。之所以在函数中用“专业名称+方案版本+课程名称”,是限定了方案版本所对应的专业和课程,因为一个方案版本有很多专业的课程对应,不对应就混淆了。WHERE条件中的前者就不说了,后者的意思就是紧扣你说的“并且培养方案版本是最新的(和自己年级最近的)”。所以,不能出现某门课程2011的方案最新,却用在了2010级身上。

不知道以上表述解释清楚了木有,要是有问题再跟帖问吧。我也在学校工作,也负责过几年的培养计划制订,所以这正好是我业务范围内的事。
2013-04-19 13:56
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
得分:0 
UPDATE pyfa SET 适用年级=STR(YEAR(DATE())-(VAL(pyfa.开课学期)+1)/2+1) from (select 专业名称,开课学期,MAX(方案版本) 方案版本 from pyfa WHERE ALLTRIM(方案版本)<=ALLTRIM(STR(YEAR(DATE())-(VAL(开课学期)+1)/2+1)) group by 专业名称,开课学期) b WHERE pyfa.专业名称==b.专业名称 AND pyfa.开课学期==b.开课学期 AND pyfa.方案版本==b.方案版本 AND MOD(VAL(pyfa.开课学期),2)=1


[ 本帖最后由 kiff 于 2013-4-19 23:55 编辑 ]
2013-04-19 15:13
lbjdyx
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-12-2
得分:0 
回复 8楼 taifu945
谢谢你的帮助!感觉vfp处理数据很方便,自己对其一知半解,平时简单的应用比如替换等还能行,复杂的操作就不行了。自己也是边学边用,好在此论坛高手很多,也非常热心帮忙,获益良多,以后我还会向大家求教!谢谢!
2013-04-19 15:20



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




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

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