【问题标题】:Loop Through Records Access VBA循环通过记录访问 VBA
【发布时间】: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 个。

标签: ms-access vba


【解决方案1】:

考虑:

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

【讨论】:

  • 是的。而已。我实际上有点工作,但每次都缺少 2 条记录,这很好地解决了这个问题。太感谢了。你摇滚
猜你喜欢
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2023-03-10
  • 1970-01-01
  • 2011-08-10
  • 2017-11-10
相关资源
最近更新 更多