以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  数字转年级  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101831)

--  作者:Liangcai
--  发布时间:2017/6/8 9:21:00
--  数字转年级
Dim t As Table = e.Form.controls("Table1").Table
Dim ary() As String = Functions.Execute("Xueqi")
Dim m As Integer = val(Left(ary(1),4))
t.Fill("Sel ect  b.学期,b.学生编号,班级,IIF(\'"& ary(1) &"\' Like \'%春%\',IIF(b.学期 Like \'%春%\',\'"& m &"\'- val(Left(b.学期,4)) + val(Left(班级,1)),IIF(b.学期 Like \'%秋%\',\'"& m &"\'- val(Left(b.学期,4)) + val(Left(班级,1))) - 1),IIF(\'"& ary(1) &"\' Like \'%秋%\',IIF(b.学期 Like \'%春%\',\'"& m &"\'- val(Left(b.学期,4)) + val(Left(班级,1)) + 1,IIF(b.学期 Like \'%秋%\',\'"& m &"\'- val(Left(b.学期,4)) + val(Left(班级,1)))))) As 年级 From ({学生基本信息} a Inner JOIN {缴费信息} b ON a.学生编号 = b.学生编号) LEFT JOIN (Sel ect  学期,学生编号,与家长关系,学生原因,家长原因,报名审批 From {违规信息} WHERE (报名审批 = \'拒收\'Or 报名审批 = \'待收\')) c ON b.学期 = c.学期 And b.学生编号 = c.学生编号 WHERE 缴费项目 = \'学费\' And IIF(\'"& ary(1) &"\' Like \'%春%\',IIF(b.学期 Like \'%春%\',\'"& m &"\'- val(Left(b.学期,4)) + val(Left(班级,1)),IIF(b.学期 Like \'%秋%\',\'"& m &"\'- val(Left(b.学期,4)) + val(Left(班级,1))) - 1) < 9,IIF(\'"& ary(1) &"\' Like \'%秋%\',IIF(b.学期 Like \'%春%\',\'"& m &"\'- val(Left(b.学期,4)) + val(Left(班级,1)) + 1,IIF(b.学期 Like \'%秋%\',\'"& m &"\'- val(Left(b.学期,4)) + val(Left(班级,1)))) <10))And c.学生编号 Is Not Null ORDER BY 年级","数据库",True)

学期格式是:2016年春季、2016年秋季.....,班级是;101、102....., 现学期减原学期加班级开头得现年级,把数字转大写,比如:val(Left(ary(1),4)) - val(Left(b.学期,4)) + val(Left(班级,1)) = 现年级,2017年春季-2015年秋季 +301 -1=4,将4转成 “4年级”
请指教,谢谢
[此贴子已经被作者于2017/6/8 9:25:05编辑过]

--  作者:有点蓝
--  发布时间:2017/6/8 9:56:00
--  
Cstr(val(Left(ary(1),4)) - val(Left(b.学期,4)) + val(Left(班级,1))) + \'年级\'
--  作者:Liangcai
--  发布时间:2017/6/8 11:16:00
--  
1年级、2年级...,能转成:一年级、二年级.....吗
--  作者:有点蓝
--  发布时间:2017/6/8 11:30:00
--  
sql里没有办法转换的,到程序里处理
--  作者:Liangcai
--  发布时间:2017/6/8 12:28:00
--  
好的,谢谢