Foxtable(狐表)用户栏目专家坐堂 → 自动学号


  共有2482人关注过本帖树形打印复制链接

主题:自动学号

帅哥哟,离线,有人找我吗?
良才
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:788 积分:6297 威望:0 精华:0 注册:2012/6/11 17:21:00
自动学号  发帖心情 Post By:2019/8/28 22:14:00 [只看该作者]

班上上学期共有40人,学号分别为:1、2、3、4........38、39、40,本学期1号和38号学生转出,来了4位新生,第一位新生学号自动为1号,第二位新生学号自动为38号,第三位新生学号自动为41号,第四位新生学号自动位42号,请老师指教代码,谢谢!
[此贴子已经被作者于2019/8/28 22:36:56编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
sloyy
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2180 积分:13816 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2019/8/28 23:09:00 [只看该作者]

空出来的学号,学生姓名为空,
循环
    查询姓名为空的最小学号
       如果找到: 填入新生姓名
       如果没找到:查找最大的学号+1
   填入新生姓名,新学号
循环

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/29 9:52:00 [只看该作者]

请上传具体实例说明

 回到顶部
美女呀,离线,留言给我吧!
联友
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:300 积分:2565 威望:0 精华:0 注册:2013/5/23 9:49:00
  发帖心情 Post By:2019/9/23 21:17:00 [只看该作者]

老师,(20191)学期是临时班内编号,点击生成班内编号,上学期(20182)学生还是原来班内编号,新生班内编号为空缺班内编号,如果空缺数不够,最大数+1,请老师指教,谢谢!


 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar

[此贴子已经被作者于2019/9/23 22:03:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
y2287958
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4649 积分:33901 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/9/23 21:29:00 [只看该作者]

小学未毕业,读不懂

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/23 22:06:00 [只看该作者]

Dim lst As List(of String) = DataTables("学生缴费").GetValues("班内编号","学期='20191'")
Dim max As Integer = val(lst(lst.Count - 1))
Dim lst2 As new List(of String)
For  i As Integer = 1 To max
    If lst.Contains(Format(i,"00")) = False Then lst2.Add(Format(i,"00"))
Next
If lst2.Count > 0 Then
    msgbox("可用编号为" & lst2(0))
Else
    max += 1
    msgbox("可用编号为" & Format(max,"00"))
End If

 回到顶部
美女呀,离线,留言给我吧!
联友
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:300 积分:2565 威望:0 精华:0 注册:2013/5/23 9:49:00
  发帖心情 Post By:2019/9/23 22:42:00 [只看该作者]

老师,我没说清楚,学期(20191)的如果老生,班内编号任然是20182的班内编号,图片中20191学期是临时班内编号

 
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20190923222932.png
图片点击可在新窗口打开查看

代码生成固定班内编号

比如:2019学期班内编号如下

学生编号               班内编号
2019030003         03
2019030002         02
2019030001         01
2019030005         05
2019030004         04
2019030008         08  
2019030006         06
2019030010         10
2019090001         07  新生
2019030009         09

2019090002         11  新生


[此贴子已经被作者于2019/9/23 22:43:36编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/23 22:57:00 [只看该作者]

没看懂。表格数据和上面的结果完全对不上。因为表格并没有缺号,如果表格有缺号,6楼的用法没有问题。

 回到顶部
美女呀,离线,留言给我吧!
联友
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:300 积分:2565 威望:0 精华:0 注册:2013/5/23 9:49:00
  发帖心情 Post By:2019/9/24 9:30:00 [只看该作者]

20182学期


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20190924092000.png
图片点击可在新窗口打开查看

 

20191学期,班内编号是临时编号


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20190924092241.png
图片点击可在新窗口打开查看

 

代码生成结果,老生班内编号任然是20182学期的班内编号,新生补缺,比如:20191(学期 ) 2019030003(学生编号) 03(班内编号任然是20182学期的班内编号),20191(学期)2019090001(学生编号新生)02 (原02号学生不在,2019090001学生补缺)

学期           学生编号       班内编号

20191    2019030001      01
20191    2019030003      03
20191    2019030004      04
20191    2019030005      05
20191    2019030006      06
20191    2019030008      08
20191    2019030009      09
20191    2019030010      10
20191    2019090001      02   新生
20191    2019090002      07   新生
20191    2019090003      11   新生

[此贴子已经被作者于2019/9/24 9:50:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/24 10:23:00 [只看该作者]

还不如直接清空,搞个临时编号干嘛

Dim lst As List(of String()) = DataTables("学生缴费").GetValues("学生编号|班内编号","学期='20182'")
Dim lst2 As List(of String) = DataTables("学生缴费").GetValues("学生编号","学期='20191'")

Dim lst3 As new List(of String)
Dim dict As new Dictionary(of String,String)
For Each a1 As String() In lst
    If lst2.Contains(a1(0)) = False Then
        lst3.Add(a1(1))
    Else
        dict.Add(a1(0),a1(1))
    End If
Next
Dim max As Integer = val(DataTables("学生缴费").Compute("max(班内编号)","学期='20182'"))

For Each dr As DataRow In DataTables("学生缴费").Select("学期='20191'")
    If dict.ContainsKey(dr("学生编号"))
        dr("班内编号") = dict(dr("学生编号"))
    Else
        If lst3.Count > 0 Then
            dr("班内编号") = lst3(0)
            lst3.RemoveAt(0)
        Else
            max += 1
            dr("班内编号") = Format(max,"00")
        End If
    End If
Next

 回到顶部
总数 20 1 2 下一页