通过 DAO 记录集返回随机记录

Access 没有用于从一组记录返回随机记录的内置机制。 本主题介绍一个用户定义的示例函数,您可以使用该函数返回一个随机记录。

Function FindRandom(RecordSetName As String, Fieldname As String) 
 
 Dim MyDB As Database 
 Dim MyRS As Recordset 
 Dim SpecificRecord As Long, i As Long, NumOfRecords As Long 
 
 Set MyDB = CurrentDB() 
 Set MyRS = MyDB.OpenRecordset(RecordSetName, dbOpenDynaset) 
 On Error GoTo NoRecords 
 MyRS.MoveLast 
 NumOfRecords = MyRS.RecordCount 
 SpecificRecord = Int(NumOfRecords * Rnd) 
 If SpecificRecord = NumOfRecords Then 
   SpecificRecord = SpecificRecord - 1 
 End If 
 MyRS.MoveFirst 
 For i = 1 To SpecificRecord 
   MyRS.MoveNext 
 Next i 
 FindRandom = MyRS(Fieldname) 
 Exit Function 
 
NoRecords: 
 If Err = 3021 Then 
   MsgBox "There Are No Records In The Dynaset", 16, "Error" 
 Else 
   MsgBox "Error - " & Err & Chr$(13) & Chr$(10) & Error, _ 
     16, "Error" 
 End If 
 FindRandom = "No Records" 
 Exit Function 
 
End Function 

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。