是否无缘无故转到下一个记录代码?

问题描述 投票:0回答:1

MS Access 2016

我在表单的当前事件中具有以下代码:

Dim linecount As Integer
Dim linenum As Integer

Private Sub Form_Current()

linenum = (DCount("ID", "tbl ShippingHistory", "[sales order] = forms![frm Shipping Information]!combo3") - 1)

If linecount < linenum Then
    linecount = linecount + 1
    DoCmd.GoToRecord Record:=acNext
End If

End Sub

实际上还有很多,但这是给我带来麻烦的部分。如果我注释掉整个子代码的其余部分,那么这部分仍然会引起问题。

因此,当窗体打开时,基本上它会计算订单上的行数并将其存储在linenum中(然后减去一,因为我不想包括我开始的记录)

然后,每次我们经历当前事件时,它会将行数加1并转到下一条记录。

当linecount等于linenum时,我们应该在最后一条记录上,而我们不再希望转到下一条记录。

所有这些似乎都可以正常工作,直到我们找到最后一条记录,此时会弹出错误消息:运行时错误2105:您无法转到指定的记录。当我点击调试按钮时,Access指示错误出在DoCmd.GoToRecord Record:=acNext

所以我在If语句的开头放了一个小段并逐步执行,这是发生的情况:

  1. 它按照我的预期进行,对行进行计数,每次我们移至新记录并激活当前事件时,它加1,并且当linecount最终等于linenum时,它将跳过其余的if语句并转到到end sub,但事件并没有就此结束...

  2. 然后...当我按下F8进行下一步时,它跳回到End If并完全跳过其他所有内容,然后下一个F8再次将其转到end sub,然后弹出错误。说我不能去唱片...

现在,我很困惑,因为它看起来不像再次转到下一个记录一样,所以为什么要尝试转到下一个记录?更重要的是,为什么它不结束子控件并在它最终到达end sub后停止,而是回到end if ...?]

编辑:只是额外的信息,我确实尝试过粘贴

else
     Exit Sub

对于if语句,但这没有什么不同。

MS Access 2016我在窗体的当前事件中具有以下代码:Dim linecount as Integer Dim linenum As Integer Private Sub Form_Current()linenum =(DCount(“ ID”,“ tbl ShippingHistory”,“ [...

access-vba ms-access-2016
1个回答
0
投票

早上好,

© www.soinside.com 2019 - 2024. All rights reserved.