我試圖將某些個人分類爲「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。
感謝您的幫助提前。
你說 「15個左右的」 - 是15,也可以是多還是少?如果或多或少會發生什麼?記錄集將始終返回「15左右」記錄? – June7
它可以更多或更少。如果更多,它應該繼續,直到記錄集的文件結束。實質上,我想將該記錄集中的每個項目分配給一個航班,而不管記錄集有多大。因此,如果記錄集包含20個,那麼我們將有20條記錄,10個航班1,10個航班2,但每個航班號不超過10個。 –
如果有21條記錄,哪個航班取得11?航班1從不超過10個? – June7