以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]怎样随机按"班"抽取学生名单  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=136)

--  作者:abcdzabcdz
--  发布时间:2008/9/2 14:12:00
--  [求助]怎样随机按"班"抽取学生名单

问题:怎样随机抽取按班学生名单?
要求:1、以“班”为单位;
       2、随机抽取;
       3、人数以输入数为标准。如输入“10”,则在各班随机抽取10名学生名单。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:随机抽取学生名单.table


--  作者:狐狸爸爸
--  发布时间:2008/9/2 17:09:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5_0902.zip


--  作者:czy
--  发布时间:2008/9/2 17:11:00
--  
他爸操刀,我等学习。
--  作者:sjjlcj
--  发布时间:2008/9/2 20:20:00
--  
试了一下抽取出来的都是9班?
--  作者:czy
--  发布时间:2008/9/2 20:23:00
--  
不会啊,看走眼了吧?
--  作者:czy
--  发布时间:2008/9/2 20:32:00
--  
以下是引用sjjlcj在2008-9-2 20:20:00的发言:
试了一下抽取出来的都是9班?


你要切换到“抽样”表中查看。


--  作者:czy
--  发布时间:2008/9/2 21:19:00
--  
以下是引用狐狸爸爸在2008-9-2 17:09:00的发言:
 下载信息  [文件大小:35.6 KB  下载次数:14]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5_0902.zip


有错误,好象应该这样。

Dim bjs As List(Of String) = DataTables("表A").GetUniqueValues("","班级")
Dim cnt As Integer = e.Form.Controls("Number").Value
DataTables("表A").StopRedraw()
DataTables("表A").DataCols.Add("随机数",GetType(Integer))
For Each dr As Datarow In DataTables("表A").DataRows
    dr("随机数") = Rand.Next()
Next
Tables("抽样").DataTable.DataRows.Clear()
Tables("表A").Sort = "随机数"
For Each bj As String In bjs
    Tables("表A").Filter = "班级 = \'" & bj & "\'"
    For i As integer = 0 To Math.Min(cnt,Tables("表A").Rows.Count)-1
        dim r As Row = Tables("抽样").AddNew()
        r("班级")  = Tables("表A").Rows(i)("班级")
        r("姓名")  = Tables("表A").Rows(i)("姓名")
    Next
Next
DataTables("表A").DataCols.Delete("随机数")
DataTables("表A").ResumeRedraw()


[此贴子已经被作者于2008-9-2 21:24:41编辑过]

--  作者:程兴刚
--  发布时间:2008/9/3 7:18:00
--  
czy版主的附件好像抽取出来每组多一人!

这样呢?

Dim bjs As List(Of String) = DataTables("表A").GetUniqueValues("","班级")
Dim cnt As Integer = e.Form.Controls("Number").Value-1
\'DataTables("表A").StopRedraw()
DataTables("表A").DataCols.Add("随机数",GetType(Integer))
For Each dr As Datarow In DataTables("表A").DataRows
    dr("随机数") = Rand.Next()
Next
Tables("抽样").DataTable.DataRows.Clear()
Tables("表A").Sort = "随机数"
For Each bj As String In bjs
    Tables("表A").Filter = "班级 = \'" & bj & "\'"
    For i As integer = 0 To Math.Min(cnt,Tables("表A").Rows.Count)
        dim r As Row = Tables("抽样").AddNew()
        r("班级")  = Tables("表A").Rows(i)("班级")
        r("姓名")  = Tables("表A").Rows(i)("姓名")
    Next
Next
DataTables("表A").DataCols.Delete("随机数")
DataTables("表A").ResumeRedraw()
Maintable = Tables("抽样")

--  作者:程兴刚
--  发布时间:2008/9/3 7:24:00
--  
哦,只是附件不行,7楼czy版主贴出的代码没问题!
--  作者:abcdzabcdz
--  发布时间:2008/9/3 9:53:00
--  
7楼代码的确没有问题,附件多1人.

谢谢两位版主!