以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]如何设置显示滚动抽签分组? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186375) |
-- 作者:hrw68529 -- 发布时间:2023/4/25 9:27:00 -- [求助]如何设置显示滚动抽签分组? 此主题相关图片如下:截图00.jpg 专家好,想制作一个考官抽签分组系统,有一个基础表,包括序号,主考官,A市,B市……G市等七个市的考官,每个面试室七个人,在基础表中,如果某个市的考官选为主考官,则该市的考官名单中有一个空格,保证每个面试室7人,且七个市的考官只有1人。目标是:在抽签系统中,点击“开始”,在上边的抽取主考官,抽取考官一……。抽取考官六下边的文本框中显示人员滚动,按下“停”按钮后,生成下表的人员抽取名单,需注意的是:如果某市有主考官,要想保证每个面试室7人,且七个市的考官只有1人的情况下,其他市的考官补充到生成表中的考官一到考官六中。关键是如果让人员在分别在主考官,考官一……考官六的文本框中滚动,有一种动态感。代码如何写,请专家指导。谢谢,如下图: |
-- 作者:hrw68529 -- 发布时间:2023/4/25 9:30:00 -- 另外,基础表有多少组,在抽签系统中就有多少面试室号 |
-- 作者:有点蓝 -- 发布时间:2023/4/25 9:44:00 -- 可以利用窗口计时事件+随机函数,动态给文本框赋值 计时器事件 dim t as table = tables("表A") e.form.controls("textbox1").text = t.rows(Rand.Next(0,t.rows.count))("考官1") e.form.controls("textbox2").text = t.rows(Rand.Next(0,t.rows.count))("考官2") Application.DoEvents()
|
-- 作者:hrw68529 -- 发布时间:2023/4/25 10:37:00 -- 有点蓝,如果有空格,不让它滚动显示出来,可以吗,只显示有名字的 [此贴子已经被作者于2023/4/25 10:41:15编辑过]
|
-- 作者:有点蓝 -- 发布时间:2023/4/25 10:41:00 -- dim dt as datatable = datatables("表A") dim drs as list(of string) = dt.getvalues("考官1","考官1 is not null") e.form.controls("textbox1").text = drs(Rand.Next(0,drs.count)) drs = dt.getvalues("考官2","考官2 is not null") e.form.controls("textbox2").text = drs(Rand.Next(0,drs.count)) |
-- 作者:hrw68529 -- 发布时间:2023/4/25 10:43:00 -- 谢谢 |
-- 作者:hrw68529 -- 发布时间:2023/4/26 8:24:00 -- 请教随机抽取号的问题 有点蓝老师好,抽取面试考官号遇到了问题,问题是:通过下述代码先生成主考官的面试室号,这此主考官分别是从不同市的考官中选出来,选出来后,每个市的列会出现空单元格,当抽取主考官面试室号后,再抽取A市、B市……的考官面试室号,在抽取A市、B市……的考官面试室号时,需排除主考官的面试室号,然后在剩余的A市、B市……的考官中抽取面试室号,保证每个考官只能选一个面试室号。下述代码如何更改,先举例主考官的抽取代码和A市考官抽取代码。谢谢 2.生成主考官代码(这个没有问题) Dim dt As Table = Tables("窗口1_table1") Dim cnt As Integer = dt.Rows.Count Dim ids(cnt -1) As Integer For i As Integer = 0 To cnt -1 ids(i) = i Next For i As Integer = 0 To cnt \\ 2 \'洗牌次数 Dim id1 As Integer = rand.Next(0,cnt) Dim id2 As Integer = rand.Next(0,cnt) Dim vid As Integer = ids(id1) ids(id1) = ids(id2) ids(id2) = vid Next dt.StopRedraw() For i As Integer = 0 To Tables("窗口1_table1").Rows.count -1 Tables("窗口1_table1").Rows(i)("主考官_面试室号")=ids(i)+1 Next dt.ResumeRedraw() 3.生成A市考官代码 Dim dt1 As Table = Tables("窗口1_table1") Dim cnt1 As Integer = dt1.Rows.Count Dim ids1(cnt1 -1) As Integer For ii As Integer = 0 To cnt1 -1 ids1(ii) = ii Next For ii As Integer = 0 To cnt1 \\ 2 \'洗牌次数 Dim id3 As Integer = rand.Next(0,cnt1) Dim id4 As Integer = rand.Next(0,cnt1) Dim vid As Integer = ids(id3) ids1(id3) = ids1(id4) ids1(id3) = vid Next dt.StopRedraw() For i As Integer = 0 To Tables("窗口1_table1").Rows.count -1 If Tables("窗口1_table1").Rows(i)("A市考官_姓名")= Nothing Then Tables("窗口1_table1").Rows(i)("A市考官_面试室号")=Tables("窗口1_table1").Rows(i)("主考官_面试室号") Else Tables("窗口1_table1").Rows(i)("A市考官_面试室号")=ids1(i)+1 End If Next dt.ResumeRedraw() |
-- 作者:有点蓝 -- 发布时间:2023/4/26 8:46:00 -- 参考5楼方式,改为使用select方法:http://www.foxtable.com/webhelp/topics/0400.htm,添加条件,只获取没有用过的面试室进行分配 |
-- 作者:hrw68529 -- 发布时间:2023/4/26 9:12:00 -- 有点蓝老师。如何排除主考官已用过的面试室号,谢谢 |
-- 作者:有点蓝 -- 发布时间:2023/4/26 9:23:00 -- Dim drs As List(Of DataRow) drs = DataTables("表A").Select("面试室号 not in(\'" & DataTables("表B").GetComboListString("面试室号").replace("|","\',\'") & "\')") |