Foxtable(狐表)用户栏目专家坐堂 → 关于排考室座位号的问题


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

主题:关于排考室座位号的问题

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


加好友 发短信
等级:小狐 帖子:317 积分:2538 威望:0 精华:0 注册:2016/4/15 22:24:00
关于排考室座位号的问题  发帖心情 Post By:2022/1/19 16:15:00 [显示全部帖子]

这段代码是自定义考场数,比如总考生160人,分6个考场,这段代码实现001号-004号每个考场27人,005-006号每个考场26人,座位号从001一直排到160。我想实现座位号按每个考场单独排,比如001号考场27人座位号排号01-27,005号考场26人从01-26,请教老师代码如何修改

If Forms("高考排考室").Controls("NumericComboBox1").Value <= 0 Then
    MessageBox.Show("考场号不能小等于零值!","中止操作",MessageBoxButtons.OK,MessageBoxIcon.Exclamation)
Else
    Dim f As New Filler
    f.SourceTable = DataTables("高考排考室")
    f.SourceCols = "班级,姓名"
    f.DataTable = DataTables("高考排考室")
    f.DataCols = "班级,姓名"
    f.ExcludeExistValue = True
    f.Fill
    For i As Integer = 0 To CurrentTable.rows.count -1
        CurrentTable.Rows(i)("索引顺序") = Rand.Next(10000)
    Next
    CurrentTable.sort = "索引顺序"
    For b As Integer = 0 To CurrentTable.rows.count -1
        CurrentTable.Rows(b)("考场号") = Format(1 + b Mod e.Form.Controls("NumericComboBox1").Value,"100")
    Next
    CurrentTable.sort = "索引顺序,考场号 Asc"
    '================
    For b As Integer = 0 To CurrentTable.rows.count -1
        CurrentTable.Rows(b)("座位号") = Format(Rand.Next(1000) + b Mod e.Form.Controls("NumericComboBox1").Value,"000")
    Next
[此贴子已经被作者于2022/1/19 16:30:36编辑过]

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


加好友 发短信
等级:小狐 帖子:317 积分:2538 威望:0 精华:0 注册:2016/4/15 22:24:00
每个考场人数是动态的  发帖心情 Post By:2022/1/19 17:12:00 [显示全部帖子]

蓝老师,这个代码每个考场人数是动态的,不确定。若按照每个考场排30个座位,前5个考场排满,座位号按01-30排,剩余的放在最后一个考场,这个代码怎么修改,请指教

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


加好友 发短信
等级:小狐 帖子:317 积分:2538 威望:0 精华:0 注册:2016/4/15 22:24:00
保留位数  发帖心情 Post By:2022/1/19 17:30:00 [显示全部帖子]

蓝老师,这个代码这样保留2位数,比如座位号1、2 变成01、02,麻烦蓝老师再看一下

[此贴子已经被作者于2022/1/19 17:37:56编辑过]

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


加好友 发短信
等级:小狐 帖子:317 积分:2538 威望:0 精华:0 注册:2016/4/15 22:24:00
代码  发帖心情 Post By:2022/1/19 17:40:00 [显示全部帖子]

蓝老师,这段代码改在按钮上,帮我修改一下

Dim dr As DataRow = e.DataRow

Select Case e.DataCol.Name

    Case "县级代号","科类代号","类别代号","考生序号"

        dr("准考证号") = dr("县级代号")+dr("科类代号")+dr("类别代号")+dr("考生序号")

End Select


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


加好友 发短信
等级:小狐 帖子:317 积分:2538 威望:0 精华:0 注册:2016/4/15 22:24:00
代码  发帖心情 Post By:2022/1/20 9:37:00 [显示全部帖子]

蓝老师,座位号保留2位数,比如座位号1、2 变成01、02,我搞了半天还是没有弄出来,麻烦蓝老师帮忙再看一下

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


加好友 发短信
等级:小狐 帖子:317 积分:2538 威望:0 精华:0 注册:2016/4/15 22:24:00
感谢蓝老师  发帖心情 Post By:2022/1/20 10:35:00 [显示全部帖子]

If Forms("高考排考室").Controls("NumericComboBox1").Value <= 0 Then
    MessageBox.Show("考场号不能小等于零值!","中止操作",MessageBoxButtons.OK,MessageBoxIcon.Exclamation)
Else
    Dim f As New Filler
    f.SourceTable = DataTables("高考排考室")
    f.SourceCols = "班级,姓名"
    f.DataTable = DataTables("高考排考室")
    f.DataCols = "班级,姓名"
    f.ExcludeExistValue = True
    f.Fill
    For i As Integer = 0 To CurrentTable.rows.count -1
        CurrentTable.Rows(i)("索引顺序") = Rand.Next(10000)
    Next
    CurrentTable.sort = "索引顺序"
    For b As Integer = 0 To CurrentTable.rows.count -1
        CurrentTable.Rows(b)("考场号") = Format(1 + b Mod e.Form.Controls("NumericComboBox1").Value,"100")
    Next
    
    CurrentTable.sort = "索引顺序"
    Dim k As Integer = 1
    Dim z As Integer = 1
    For b As Integer = 0 To CurrentTable.rows.count -1
        CurrentTable.Rows(b)("考场号") = Format(k,"100")  ''默认Format(k,"000")
        CurrentTable.Rows(b)("座位号") = Format(Rand.Next(30) + b Mod e.Form.Controls("NumericComboBox1").Value,"00")
        CurrentTable.Rows(b)("座位号") = z
        CurrentTable.Rows(b)("座位号") = Format(z,"00")
        z = z + 1
        If z > 30 Then
            z = 1
            k = k + 1
        End If
    Next
End If

蓝老师,这个代码很好用,由于是前面的考场排满30人后,再排后面的考场,这个填入考场数量的"NumericComboBox1"已经没有用了,取消输入考场数量这个代码就更完美了

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


加好友 发短信
等级:小狐 帖子:317 积分:2538 威望:0 精华:0 注册:2016/4/15 22:24:00
谢谢蓝老师  发帖心情 Post By:2022/1/20 11:20:00 [显示全部帖子]

If Forms("高考排考室").Controls("NumericComboBox1").Value <= 0 Then
    MessageBox.Show("考场号不能小等于零值!","中止操作",MessageBoxButtons.OK,MessageBoxIcon.Exclamation)
Else

    Dim f As New Filler
    f.SourceTable = DataTables("高考排考室")
    f.SourceCols = "班级,姓名"
    f.DataTable = DataTables("高考排考室")
    f.DataCols = "班级,姓名"
    f.ExcludeExistValue = True
    f.Fill
    For i As Integer = 0 To CurrentTable.rows.count -1
        CurrentTable.Rows(i)("索引顺序") = Rand.Next(10000)
    Next
    CurrentTable.sort = "索引顺序"
    For b As Integer = 0 To CurrentTable.rows.count -1
        CurrentTable.Rows(b)("考场号") = Format(1 + b Mod e.Form.Controls("NumericComboBox1").Value,"100")
    Next
    
    CurrentTable.sort = "索引顺序"
    Dim k As Integer = 1
    Dim z As Integer = 1
    For b As Integer = 0 To CurrentTable.rows.count -1
        CurrentTable.Rows(b)("考场号") = Format(k,"100")  ''默认Format(k,"000")
        CurrentTable.Rows(b)("座位号") = Format(Rand.Next(30) + b Mod e.Form.Controls("NumericComboBox1").Value,"00")
        CurrentTable.Rows(b)("座位号") = z
        CurrentTable.Rows(b)("座位号") = Format(z,"00")
        z = z + 1
        If z > 30 Then
            z = 1
            k = k + 1
        End If
    Next
End If
蓝老师,我将上面红色的都去掉,没有问题吧?

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


加好友 发短信
等级:小狐 帖子:317 积分:2538 威望:0 精华:0 注册:2016/4/15 22:24:00
已解决  发帖心情 Post By:2022/1/20 11:26:00 [显示全部帖子]

非常感谢蓝老师,应该是很完美的了

 回到顶部