以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]从匹配信息中随机返回一个值,如何处理?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=43485)

--  作者:hiliuyong
--  发布时间:2013/12/8 22:05:00
--  [求助]从匹配信息中随机返回一个值,如何处理?

Dim 真实品名 As String = Args(0)
Dim dr As DataRow
dr = DataTables("品名对照表").Find("实际品名名称 = \'"& 真实品名 &"\'")
If dr IsNot Nothing Then \'如果找到的话
    \'Dim Filter As String = "实际品名名称 = \'" & 真实品名 & "\'"
    \'Dim 个数 As Integer = DataTables("品名对照表").Compute("Count(_Identify)",Filter)
    \'这一步想返回一个随机的申报品名名称
    Return dr("申报品名名称")
Else
    Return 真实品名
End If

 

以上是一个函数,一个真实品名对照多个申报品名,

想从对应的申报品名中随机找到一个,然后返回一个值。

请教一下,注释这几句如何写呢?

[此贴子已经被作者于2013-12-8 22:05:35编辑过]

--  作者:有点甜
--  发布时间:2013/12/8 22:40:00
--  
Dim 真实品名 As String = Args(0)
Dim dr As DataRow
Dim Filter As String = "实际品名名称 = \'" & 真实品名 & "\'"
Dim 个数 As Integer = DataTables("品名对照表").Compute("Count(_Identify)",Filter)
If 个数 > 0 Then \'如果找到的话
    Dim rand As Integer = Rand.Next(1, 个数)
    dr = DataTables("品名对照表").Find(filter, "_Identify", rand - 1)
    Return dr("申报品名名称")
Else
    Return 真实品名
End If

--  作者:程兴刚
--  发布时间:2013/12/9 0:28:00
--  

Dim drs As List(Of DataRow)
drs = DataTables("品名对照表").Select("实际品名名称 = \'" & Args(0) & "\'")

if drs.Count > 0

     Return drs(Rand.Next(0,drs.Count-1))

else

    Return Args(0)

end if

 

这样也许效率高一些!


--  作者:hiliuyong
--  发布时间:2013/12/9 18:46:00
--  

谢谢,采用了二楼的方法,

变量RAND改为RANDX,

RAND好像是系统保留字。

谢谢各位!