做不好就要失业了。请高手帮帮忙!
我所在的学校每个学生都有一个学号。是在入学时候按输入的学生ID=入学年份+学部+学号+性别;
下面是student表的结构。
id(int 4) | sName(nvarchar 50) | sNum(char 10) | sDep(char 2) | grade(char 2) | sClass(char 1) | sSex(char 10) | InPutTime(datetime 8) |
824 | 某某某 | 2001020580 | 02 | 09 | 2 | 女 | 2006-2-22 |
主要是要生成sNum(char 10)这个学生ID。原来已有了.NET的程序生成。现在希望能转为ASP的方式生成。
.Net的生成代码如下:
//生成学生ID号
protected string sId()
{
string sId;//学生ID号
string sIn;//入学日期
string sDeps;//学部
string sSexs;//学生性别
string sNum;//学生学号
int yearin;//临时存放入学日期
DateTime thisDate = DateTime.Now;
int year = (int)thisDate.Year;
int month = (int)thisDate.Month;
switch(sDep.SelectedValue)
{
case "01" :
yearin = year-Int32.Parse(sGrade.SelectedValue);
break;
default :
yearin = year-Int32.Parse(sGrade.SelectedValue)+4;
break;
}
//学生性别
switch(sSex.SelectedValue)
{
case "男" :
sSexs = "1";
break;
default :
sSexs = "0";
break;
}
month = month/9; //学校的学年是从九月份开始
yearin = yearin + month; //入学日期,如果当前时间是九月到十二月则加一
sIn = yearin.ToString();
sDeps = sDep.SelectedValue;//学部
sNum = sNum_Get();//返回函数得到学生学号
sId = sIn+sDeps+sNum+sSexs;//学生ID=入学年份+学部+学号+性别;
return sId;
}
//生成学生学号
protected string sNum_Get()
{
int sNumInt=0;//临时存放学号,再转换成string
string sNum;
string sql = "select substring(sNum,7,3) as [学号] from student where sDep='"+sDep.SelectedValue.ToString().Trim()+"' and grade='"+sGrade.SelectedValue.ToString().Trim()+"' order by [学号]";
DataSet studentDs = new DataSet();
studentDs = sqlLink.myDataSet(ref studentDs,sql);
int numCount = studentDs.Tables[0].Rows.Count;
//如果numCount为零则学号为1,否则开始计算学号
if(numCount!=0)
{
//后一数据与前一数据相差大于等于2的话可以插入一新的数据
for(int i=0;i<numCount-1;i++)
{
if(Convert.ToInt32(studentDs.Tables[0].Rows[i+1][0])-Convert.ToInt32(studentDs.Tables[0].Rows[i][0])>=2)
{
sNumInt = Convert.ToInt32(studentDs.Tables[0].Rows[i][0])+1;
break;
}
}
//当遍历之后找不到后一数据与前一数据相差大于等于2的数据,则sNumInt为最后一数据加1
if(sNumInt == 0)
{
sNumInt = Convert.ToInt32(studentDs.Tables[0].Rows[numCount-1][0])+1;
}
}
else
{
sNumInt = 1;
}
string sNumPre=null;//到目前为止生成的sNumInt的前面的"0"
sNum = sNumInt.ToString();
switch(sNum.Length)
{
case 1 :
sNumPre = "00";
break;
case 2 :
sNumPre = "0";
break;
default :
sNumPre = "";
break;
}
sNum = sNumPre+sNum;//最终生成的学号
return sNum;
}
}
}
请高手帮忙转成ASP的,不知道行不行。谢谢了。
[此贴子已经被作者于2006-6-12 11:15:13编辑过]