以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]怎样从表格中随机抽取几行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=66283)

--  作者:hrdlfoxtable
--  发布时间:2015/4/2 16:04:00
--  [求助]怎样从表格中随机抽取几行
比如我有一个专家库的表格,里面有很多行,每行一个专家信息,做一个按钮,第一下随机从表中抽取几行显示出来
--  作者:Bin
--  发布时间:2015/4/2 16:10:00
--  
利用随机函数 http://www.foxtable.com/help/topics/0349.htm

datatables("XX").datarows(Rand.Next(datatables("XX").datarows.Count-1))

随机获得一行

--  作者:hrdlfoxtable
--  发布时间:2015/4/2 16:12:00
--  
先谢谢,我反应慢,还要慢慢试,先提前感谢
--  作者:程兴刚
--  发布时间:2015/4/2 21:43:00
--  

从表中随机抽取行通用代码:

 

Dim s As String =  CurrentTable.DataTable.GetComboListString("_Identify")
Dim Values() As String
Values = s.Split("|")
Dim n As Integer = Math.Min(Values.Length - 1,3)  \'调整此行代码括号内最后一个参数为您需要的任意行数,不足三行时全选
Dim idf,Filter As String
Filter = "|"
Do While n > 0
    idf = Values(Rand.Next(Values.Length - 1))
    If Filter.Contains("_Identify = " & idf) = False
        Filter = Filter & " or _Identify = " & idf
        n = n-1
    End If
    Filter = Filter.Replace("| or ","")
Loop
CurrentTable.Filter = Filter


--  作者:狐狸爸爸
--  发布时间:2015/4/3 9:09:00
--  

随机抽取少量行的标准代码:

 

Dim ids As String
Dim lst As new List(of String)
Dim cnt As Integer = DataTables("表A").DataRows.Count
Do
    Dim Id As Integer = rand.Next(0,cnt)
    id = DataTables("表A").DataRows(id)("_Identify")
    If lst.Contains(id) =False Then
        lst.Add(id)
    End If
    ids = ids & id & ","
Loop While lst.count < 5   \'5是要抽取的行数
Tables("表A").Filter = "[_Identify] In (" & ids.Trim(",") & ")"

[此贴子已经被作者于2015/4/3 9:12:01编辑过]

--  作者:程兴刚
--  发布时间:2015/4/3 16:52:00
--  

顶,现在这样效率高多了!


--  作者:花开的声音
--  发布时间:2016/12/21 15:42:00
--  
mark