先生成1/3数量的随机数数组,然后生成recordset,抽取相应的记录号的行

解决方案 »

  1.   

    主要是写一个可以产生随机数的函数就可以了啊!如果你不会写,可以和我联系:
    [email protected]
      

  2.   

    dajianshi(大剑师)说的对。
    随机数的产生只要用Rnd就行。
    不过在用以前。要先用个Randomize。要不然永远是一样的数字。
    注意要判断是否重复。
      

  3.   

    cqq_chen(我是谁)
    我不会写!!!我的油箱是[email protected] 标题请著名“函数”。谢谢你了
      

  4.   

    dajianshi(大剑师)
    我就是不会生成啊!~~
      

  5.   

    不难呀,只需要生成一个标志数组就行了Dim bFlag() As Boolean
    Dim iRecordCount As Long
    Dim iCount As Long
    Dim iRnd As Long
    Dim i As Long
    Dim rst As Recordset    Set rst = cn.Excute("Select Count(*) From T1")
        iRecordCount = rst(0)
        If iRecordCount = 0 Then Exit Sub    ReDim bFlag(iRecordCount - 1)
        For i = 0 To iRecordCount - 1
            bFlag(i) = False
        Next i
        
        Randomize
        
        iCount = iRecordCount \ 3
        Do While iCount > 0
            iRnd = CInt(Rnd * iRecordCount)
            If Not bFlag(iRnd) Then
                bFlag(iRnd) = True
                iCount = iCount - 1
            End If
        Loop    Set rst = cn.Excute("Select * From T1")
        iCount = 0
        Do While Not rst.Eof
            if bFlag(iCount) Then 对此行数据进行处理
            
            iCount = iCount + 1
            rst.MoveNext
        Loop
      

  6.   

    Dim con As New Connection
    Dim rs As Recordset
    Dim a() As String
    Dim i, j, k, x, y As Long
    Dim flag As Boolean
    flag = True
    Randomize
    con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Baolei\VB\RPTTRY\db1.mdb;Persist Security Info=False"
    con.Open
    Set rs = con.Execute("select * from a1")
    If Not rs.EOF And Not rs.BOF Then
        i = 1
        rs.MoveFirst
        Do While Not rs.EOF     '算出数据数量
            i = i + 1
            rs.MoveNext
        Loop
    End If
    k = i \ 3 + i Mod 3
    ReDim a(k)
    y = 1
    Do While Not y > k         '开始取得随机数
        j = CInt(Rnd(1) * i)
        For x = 1 To k         '判断是否重复
            If a(x) = j Then
                flag = False
            End If
        Next
        If flag Then
            a(y) = j
            y = y + 1
        End If
    Loop
    Set rs = Nothing
    con.Close
    你试试吧,有可能还要调试一下
      

  7.   

    Dim con As New Connection
    Dim rs As Recordset
    Dim a() As String
    Dim i, j, k, x, y As Long
    Dim flag As Boolean
    flag = True
    Randomize
    con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Baolei\VB\RPTTRY\db1.mdb;Persist Security Info=False"
    con.Open
    Set rs = con.Execute("select * from a1")
    If Not rs.EOF And Not rs.BOF Then
        i = 1
        rs.MoveFirst
        Do While Not rs.EOF     '算出数据数量
            i = i + 1
            rs.MoveNext
        Loop
    End If
    k = i \ 3 + i Mod 3
    ReDim a(k)
    y = 1
    Do While Not y > k         '开始取得随机数
        j = CInt(Rnd(1) * i)
        For x = 1 To k         '判断是否重复
            If a(x) = j Then
                flag = False
            End If
        Next
        If flag Then
            a(y) = j
            y = y + 1
        End If
    Loop
    Set rs = Nothing
    con.Close
    你试试吧,有可能还要调试一下
      

  8.   

    Dim con As New Connection
    Dim rs As Recordset
    Dim a() As String
    Dim i, j, k, x, y As Long
    Dim flag As Boolean
    flag = True
    Randomize
    con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Baolei\VB\RPTTRY\db1.mdb;Persist Security Info=False"
    con.Open
    Set rs = con.Execute("select * from a1")
    If Not rs.EOF And Not rs.BOF Then
        i = 1
        rs.MoveFirst
        Do While Not rs.EOF     '算出数据数量
            i = i + 1
            rs.MoveNext
        Loop
    End If
    k = i \ 3 + i Mod 3
    ReDim a(k)
    y = 1
    Do While Not y > k         '开始取得随机数
        j = CInt(Rnd(1) * i)
        For x = 1 To k         '判断是否重复
            If a(x) = j Then
                flag = False
            End If
        Next
        If flag Then
            a(y) = j
            y = y + 1
        End If
    Loop
    Set rs = Nothing
    con.Close
    你试试吧,有可能还要调试一下
      

  9.   

    gcsoft(gcsoft)!
    谢谢!~~能不能写一点注解,我有一点看不懂。
      

  10.   

    cqq_chen(我是谁)
    你的我看过了,如果是数字,一定可以,但我要调的是数据库里的记录。可能有点欠缺
      

  11.   

    baoxiang(包香)
    你的程序不错!我好用的,但我要提出数据,语句该写在那里啊?