循环直接记录访问VBA

我试图将某些个人分类为“Flights”。飞行中不能超过10人,并且我正在循环查看记录集,根据现有航班中的人数来确定每个人应该乘坐哪个航班。循环直接记录访问VBA

所以它应该理想地看看表,做的人的数量的动态计数飞行1,如果这个数字是< = 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。

感谢您的帮助提前。

回答:

考虑:

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

以上是 循环直接记录访问VBA 的全部内容, 来源链接: utcz.com/qa/258810.html

回到顶部