生成隨機(jī)數(shù)據(jù) Access數(shù)據(jù)庫功能模塊講解 VBA代碼實(shí)例
Dim rs1 As DAO.Recordset
Private Sub Command生成數(shù)字_Click()
Dim minint As Single
Dim maxint As Single
If Me.最小數(shù)字 <> "" And Me.最大數(shù)字 <> "" Then
minint = Me.最小數(shù)字
maxint = Me.最大數(shù)字
? ? If minint >= maxint Then
? ? ? ? MsgBox "最小數(shù)字要小于最大數(shù)字"
? ? ? ? Exit Sub
? ? End If
Else
MsgBox "請輸入最大最小數(shù)字"
Exit Sub
End If
If Me.生成數(shù)量 < 1 Or Me.生成數(shù)量 = "" Then
MsgBox "生成數(shù)量必須大于0"
End If
Dim rndcount As Long
rndcount = Me.生成數(shù)量
DoCmd.SetWarnings (False)
Dim del_sql As String
del_sql = "Delete From 生成表"
DoCmd.RunSQL del_sql
Dim add_rs As DAO.Recordset
Set add_rs = CurrentDb.OpenRecordset("生成表", dbOpenTable)
With add_rs
Dim i
For i = 1 To rndcount
.AddNew
!生成結(jié)果.Value = 生成隨機(jī)數(shù)字(minint, maxint)
.Update
Next i
.Close
End With
Set add_rs = Nothing
MsgBox "生成完成"
End Sub
Function 生成隨機(jī)數(shù)字(ByVal minnum As Single, ByVal maxnum As Single) As Single
Randomize
生成隨機(jī)數(shù)字 = Round((maxnum - minnum + 1) * Rnd + minnum, 2)
End Function
Private Sub Command生成項(xiàng)目_Click()
Dim itemcount As Long
itemcount = Nz(DCount("項(xiàng)目", "隨機(jī)項(xiàng)目"), 0)
If itemcount < 2 Then
? ? MsgBox "隨機(jī)項(xiàng)目必須大于1"
? ? Exit Sub
End If
If Me.生成數(shù)量 < 1 Or Me.生成數(shù)量 = "" Then
MsgBox "生成數(shù)量必須大于0"
End If
Dim rndcount As Long
rndcount = Me.生成數(shù)量
DoCmd.SetWarnings (False)
Dim del_sql As String
del_sql = "Delete From 生成表"
DoCmd.RunSQL del_sql
Dim add_rs As DAO.Recordset
Set add_rs = CurrentDb.OpenRecordset("生成表", dbOpenTable)
With add_rs
Dim i
For i = 1 To rndcount
.AddNew
!生成結(jié)果.Value = 獲取隨機(jī)項(xiàng)目(itemcount)
.Update
Next i
.Close
End With
Set add_rs = Nothing
MsgBox "生成完成"
End Sub
Function 獲取隨機(jī)項(xiàng)目(ByVal maxnum As Long) As String
Dim Record_count As Long
Record_count = maxnum
Dim rnd_i As Long
Randomize
rnd_i = Int((Record_count - 1 + 1) * Rnd + 1)
rs1.MoveFirst
rs1.Move (rnd_i - 1)
獲取隨機(jī)項(xiàng)目 = rs1.Fields("項(xiàng)目").Value
End Function
Function 生成隨機(jī)整數(shù)(ByVal minnum As Long, ByVal maxnum As Long) As Long
Randomize
生成隨機(jī)整數(shù) = Int((maxnum - minnum + 1) * Rnd + minnum)
End Function
Private Sub Command生成整數(shù)_Click()
Dim minint As Long
Dim maxint As Long
If Me.最小整數(shù) <> "" And Me.最大整數(shù) <> "" Then
minint = Me.最小整數(shù)
maxint = Me.最大整數(shù)
? ? If minint >= maxint Then
? ? ? ? MsgBox "最小整數(shù)要小于最大整數(shù)"
? ? ? ? Exit Sub
? ? End If
Else
MsgBox "請輸入最大最小整數(shù)"
Exit Sub
End If
If Me.生成數(shù)量 < 1 Or Me.生成數(shù)量 = "" Then
MsgBox "生成數(shù)量必須大于0"
End If
Dim rndcount As Long
rndcount = Me.生成數(shù)量
DoCmd.SetWarnings (False)
Dim del_sql As String
del_sql = "Delete From 生成表"
DoCmd.RunSQL del_sql
Dim add_rs As DAO.Recordset
Set add_rs = CurrentDb.OpenRecordset("生成表", dbOpenTable)
With add_rs
Dim i
For i = 1 To rndcount
.AddNew
!生成結(jié)果.Value = 生成隨機(jī)整數(shù)(minint, maxint)
.Update
Next i
.Close
End With
Set add_rs = Nothing
MsgBox "生成完成"
End Sub
Private Sub Form_Load()
Set rs1 = CurrentDb.OpenRecordset("隨機(jī)項(xiàng)目", dbOpenTable)
End Sub