循环记录访问VBA

时间:2017-12-02 23:24:27

标签: ms-access access-vba

我试图将某些人归类为“航班”。在一次飞行中不能超过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。

提前感谢您的帮助。

1 个答案:

答案 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