我试图将某些人归类为“航班”。在一次飞行中不能超过10人,我正在循环记录集,以根据现有航班中的人数统计确定每个人应该乘坐的航班。
因此,理想情况下应该查看表格,如果该数字为< = 10则对飞行1中的人数进行动态计数,然后继续编写记录,如果不增加航班号并再次行驶,直到所有的运动员都被分配了。
记录集似乎没有表明它何时到达EOF并继续跳回到Move First,并且它无休止地循环记录。
Option Compare Database
Function TrampUpdate()
Dim DB As Database
Dim Session1 As DAO.Recordset
Dim Session1Master As DAO.Recordset
Dim Flight As Integer
Dim AthleteID As String
Dim FlightCount As Integer
Set DB = CurrentDb()
Dim SSql As String
Set Session1 = DB.OpenRecordset("qrySession1Tramp")
Session1.MoveFirst
Flight = 1
Do While Not Session1.EOF
AthleteID = Session1.Fields("AthleteID")
SSql = "Insert Into tblSession1(AthleteID, TrampFlight) Values('" &
AthleteID & "', " & Flight & ")"
DoCmd.SetWarnings False
DoCmd.RunSQL (SSql)
DoCmd.SetWarnings True
FlightCount = DCount("[TrampFlight]", "tblSession1", "[TrampFlight] = " &
Flight & "")
If FlightCount >= 10 Then
Flight = Flight + 1
End If
Session1.MoveNext
Loop
Session1.Close
End Function
我已经尝试过各种各样的方式,在这一点上,我仍然坚持为什么它不能正常工作。我觉得它的东西非常明显,但我一直在看这个,这么久我再说不出来了。
在循环结束时,所有记录(大约15个)应该用航班写入新表,其中10个将在1号航班中,5个应该在飞行中2.现在它正在重复它们并且只是一遍又一遍地添加它们1-10。
提前感谢您的帮助。
答案 0 :(得分:0)
考虑:
Flight = 1
While Not rs.EOF
If FlightCount = 10 Then
Flight = Flight + 1
FlightCount = 0
End If
FlightCount = FlightCount + 1
If Not rs.EOF Then
CurrentDb.Execute "Insert Into tblSession1(AthleteID, TrampFlight) Values('" & AthleteID & "', " & Flight & ")"
rs.MoveNext
End If
Wend