以文本方式查看主题

-  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=158457)

--  作者:13796361423
--  发布时间:2020/11/20 15:35:00
--  高效抽取

Dimcnt AsInteger = DataTables("表A").DataRows.Count
Dim
ids1 AsNew List(ofInteger) \'用于存储洗牌前的位置
Dim
ids2 AsNew List(ofInteger) \'用于存储洗牌后的位置
For
i AsInteger = 0To cnt -1\'准备初始的牌
ids1.add(i)

Next
For
i AsInteger = 0To cnt -1 \'开始洗牌
Dim idxAs Integer =ids1(rand.Next(0,ids1.count))
ids2.Add(idx)
ids1.Remove(idx)

Next
Tables
("表A").StopRedraw()
DataTables
("表A").ReplaceFor("选择",False)
For
i AsInteger = 0To 5 -1 \'100为要抽取的行数
DataTables("表A").DataRows(ids2(i))("选择") = True
Next
Tables
("表A").Filter = "[选择] = True"
Tables
("表A").ResumeRedraw()

 

 

这个命令只能显示"[选择] = True"的行, 我想"[选择] = True"的行下面也同时显示"[选择] = false" , 也就是说打乱后,把所有行都显示出来,如何实现?


--  作者:有点蓝
--  发布时间:2020/11/20 16:07:00
--  
增加一个排序列,随机赋值即可

for each r as row in Tables("表A").DataRows
r("排序列") = rand.Next(0,1000000)
nect

Tables("表A").sort = "排序列"

--  作者:13796361423
--  发布时间:2020/11/20 16:17:00
--  好像哪个代码需要改
差在哪一步?
图片点击可在新窗口打开查看此主题相关图片如下:9.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2020/11/20 16:45:00
--  
for each r as row in Tables("表A").Rows