随机抽取少量记录
如果要从数据表中随机抽取一定数量的记录,例如从员工表随机抽取5个员工,可以参考下面的代码:
Dim
ids
As
String
Dim
lst
As
new
List(of
String)
Dim
cnt
As
Integer = DataTables("员工").DataRows.Count
Do
Dim
Id
As
Integer = rand.Next(0,cnt)
id = DataTables("员工").DataRows(id)("_Identify")
If
lst.Contains(id) =False
Then
lst.Add(id)
End
If
ids = ids
&
id
&
","
Loop
While
lst.count < 5 '5是要抽取的行数
Tables("员工").Filter = "[_Identify] In ("
&
ids.Trim(",") &
")"
上面的代码适合随机抽取少量的记录。
随机抽取大量记录
如果随机抽取的记录较多,可以考虑增加一个逻辑列,假定逻辑列的名称为“选择”,可以参考下面的代码:
Dim
lst
As
new
List(of
Integer)
Dim
cnt
As
Integer = DataTables("订单").DataRows.Count
Tables("订单").StopRedraw()
DataTables("订单").ReplaceFor("选择",False)
Do
Dim
idx
As
Integer = rand.Next(0,cnt)
If
lst.Contains(idx) =False
Then
lst.Add(idx)
DataTables("订单").DataRows(idx)("选择") = True
End
If
Loop
While
lst.count < 100 '100是要抽取的行数
Tables("订单").Filter = "[选择] = True"
Tables("订单").ResumeRedraw()
上面的代码从订单表中随机抽取100个订单。
建议逻辑列“选择”采用表达式列,不要给其设置表达式即可,因为:没有设置表达式的表达式列,可以通过代码设置此列的值。