循环直接记录访问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