7,763
社区成员
发帖
与我相关
我的任务
分享
Option Explicit
Private Sub Command1_Click()
Dim cn As New Connection
cn.Open "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\database1.mdb"
cn.Execute "delete * from shouhou;"
Dim rs As New Recordset
rs.Open "select * from shouhou;", cn, adOpenKeyset, adLockOptimistic
Dim i As Long
For i = 1 To 16
rs.AddNew
rs!shouhou = "售后" & i
rs.Update
Next
cn.Execute "delete * from kehu;"
rs.Close
rs.Open "select * from kehu;", cn, adOpenKeyset, adLockOptimistic
For i = 1 To 800
rs.AddNew
rs!kehu = "客户" & i
rs.Update
Next
MsgBox "初始化完成!"
End Sub
Private Sub Command2_Click()
Form2.Show
End Sub
Form2:
Option Explicit
Private mobjRecordset As New Recordset
Private mobjConnection As New Connection
Private Sub Check1_Click()
Timer1.Enabled = (Check1.Value = vbChecked)
End Sub
Private Sub Form_Load()
mobjConnection.Open "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\database1.mdb"
mobjRecordset.Open "select * from huifang;", mobjConnection, adOpenKeyset, adLockOptimistic
Set Adodc1.Recordset = mobjRecordset
Adodc1.Refresh
End Sub
Private Sub Form_Unload(Cancel As Integer)
mobjRecordset.Close
mobjConnection.Close
End Sub
Private Sub Calc()
' 读取客户数据到集合;
Dim rs As New Recordset
rs.Open "select * from kehu;", mobjConnection, adOpenKeyset, adLockOptimistic
Dim colKehu As New Collection
rs.MoveFirst
While Not rs.EOF
Dim objKehu As CKehu
Set objKehu = New CKehu
objKehu.mstrName = rs!kehu
colKehu.Add objKehu
rs.MoveNext
Wend
rs.Close
' 读取售后数据到集合;
rs.Open "select * from shouhou;", mobjConnection, adOpenKeyset, adLockOptimistic
Dim colShouhou As New Collection
rs.MoveFirst
While Not rs.EOF
Dim objShouhou As CShouhou
Set objShouhou = New CShouhou
objShouhou.mstrName = rs!shouhou
colShouhou.Add objShouhou
rs.MoveNext
Wend
rs.Close
' 随机得到50个客户;
Dim colResult As New Collection
Dim i As Long
For i = 1 To 50
Dim lngIndex As Long
lngIndex = GetRnd(1, colKehu.Count)
Set objKehu = colKehu(lngIndex)
' 随即得到一个客户,并从客户集合中移除;
colResult.Add objKehu
colKehu.Remove lngIndex
Do
' 随即得到1个售后;
lngIndex = GetRnd(1, colShouhou.Count)
Set objShouhou = colShouhou(lngIndex)
' 如果两个售后不重复就加入客户的售后字典;
If Not objKehu.mdctShouhou.Exists(objShouhou.mstrName) Then
' 添加客户的售后;
objKehu.mdctShouhou.Add objShouhou.mstrName, Null
' 添加售后的客户;
objShouhou.mdctKehu.Add objKehu.mstrName, Null
' 如果售后的客户数量大于等于8,就将该售后从售后集合中移除;
If objShouhou.mdctKehu.Count >= 8 Then
colShouhou.Remove lngIndex
End If
' 如果客户的售后数量大于等于2,就中止计算该客户的售后;
If objKehu.mdctShouhou.Count >= 2 Then
Exit Do
End If
End If
Loop
Next
' 将计算结果写入数据库;
mobjConnection.Execute "delete * from huifang;"
rs.Open "select * from huifang;", mobjConnection, adOpenKeyset, adLockOptimistic
For i = 1 To colResult.Count
Set objKehu = colResult(i)
Dim varKeys As Variant
varKeys = objKehu.mdctShouhou.Keys
rs.AddNew
rs!shouhou1 = varKeys(0)
rs!shouhou2 = varKeys(1)
rs!kehu = objKehu.mstrName
rs.Update
Next
End Sub
' 得到指定范围内的随机数;
Private Function GetRnd(ByVal intStart As Integer, ByVal intEnd As Integer) As Integer
Randomize
GetRnd = Int(Rnd() * (intEnd - intStart + 1)) + intStart
End Function
Private Sub Timer1_Timer()
Calc
mobjRecordset.Requery
Adodc1.Refresh
End Sub
CKehu:
Option Explicit
Public mstrName As String
Public mdctShouhou As New Dictionary
CShouhou:
Option Explicit
Public mstrName As String
Public mdctKehu As New Dictionary
下载地址:
链接:https://pan.baidu.com/s/1Q8oOmWVIeBWS9fF3pqyGdw
提取码:mry7
运行示例: