【发布时间】:2018-05-16 18:09:46
【问题描述】:
我正在尝试将某些人分类为“航班”。一个航班中的人数不能超过 10 人,我正在循环记录一个记录集,以根据现有航班中的人数来确定每个人应该乘坐的航班。
因此,理想情况下,它应该查看表格,如果该数字
记录集似乎没有指示它何时到达 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。
提前感谢您的帮助。
【问题讨论】:
-
您说“15 左右” - 是 15 还是更多或更少?如果多或少会发生什么?记录集总是会返回“15 条左右”的记录?
-
可以或多或少。如果更多,它应该一直持续到记录集的文件结束。本质上,无论记录集有多大,我都想将该记录集中的每个项目分配给一个航班。因此,如果记录集包含 20 条记录,那么我们将有 20 条记录,航班 1 有 10 条,航班 2 有 10 条,但每个航班号不超过 10 条。
-
如果有 21 条记录,哪个航班有 11 条记录?航班 1 永远不会超过 10 个?
-
每个航班有 10 个但不超过 10 个,因此如果有 21 条记录,航班 1 会有 10 个,航班 2 有 10 个,航班 3 有 1 个。