Vba 返回到上一条记录的int数组
我有一个标准表单,它显示基于partID的信息。该表单有一个子表单,显示零件的辅助工具,双击该子表单将带您找到该零件号(下面的代码段)。var_lastPartID是一个记录当前ID的全局长变量,因此按下返回按钮将返回到上一条记录。但是,由于一次只能存储1个值,因此我认为最好的方法是存储long/int数组,双击后存储当前ID。单击“返回”时,它将获取最后添加的值并将您带到该记录,然后删除该记录,以便下次单击“返回”时将您带到下一条记录。然而,我使用VBA的经验非常有限,我以前从未使用过它们。请有人解释一下我是如何做到这一点的Vba 返回到上一条记录的int数组,vba,ms-access,Vba,Ms Access,我有一个标准表单,它显示基于partID的信息。该表单有一个子表单,显示零件的辅助工具,双击该子表单将带您找到该零件号(下面的代码段)。var_lastPartID是一个记录当前ID的全局长变量,因此按下返回按钮将返回到上一条记录。但是,由于一次只能存储1个值,因此我认为最好的方法是存储long/int数组,双击后存储当前ID。单击“返回”时,它将获取最后添加的值并将您带到该记录,然后删除该记录,以便下次单击“返回”时将您带到下一条记录。然而,我使用VBA的经验非常有限,我以前从未使用过它们。请
Private Sub childPart_DblClick(Cancel As Integer)
var_lastPartID = Forms![Part]![part_ID].Value
Forms("Part").Recordset.FindFirst ("part_ID = " & childPart)
End Sub
好的,你有一个父窗体,然后是一个子窗体 单击子窗体中的一行。您希望父窗体跳转到此记录。但由于您可能会多次这样做,因此您需要在主窗体上显示某种“后退”或“上一步”按钮。当您单击此后退按钮时,您希望跳转的上一个ID出现 好的,驱动它的方法是什么,并且有一组下一个/上一个按钮来遍历您查看、处理和单击的记录 好的,在主窗体中,在代码模块级别,创建一个指针、一个集合和一个例程,如下所示:
Option Compare Database
Option Explicit
Dim intListPosition As Integer
Dim colRecords As New Collection
Public Sub AddAndJump(MyID As Long)
' add this new ID to the list
intListPosition = intListPosition + 1
colRecords.Add MyID, CStr(intListPosition)
' now jump (move) to this record
Me.Recordset.FindFirst "ID = " & MyID
End Sub
Public Sub BackOne()
' call this code from your back buttion
' go to previous record
If intListPosition > 1 Then
intListPosition = intListPosition - 1
Me.Recordset.FindFirst "ID = " & colRecords.Item(CStr(intListPosition))
End If
End Sub
Public Sub ForwardOne()
'call this code from your forward buttion
If intListPosition < colRecords.Count Then
intListPosition = intListPosition + 1
Me.Recordset.FindFirst "ID = " & colRecords.Item(CStr(intListPosition))
End If
End Sub
Private Sub cmdBack_Click()
BackOne
End Sub
Private Sub cmdNext_Click()
ForwardOne
End Sub
因此,上面的内容现在允许在顶部表单上单击下一步/上一步按钮,当您单击并从下部表单(子表单)中选择项目时,将建立“id”列表,下一步/上一步按钮将起作用。我不确定是否理解您的问题。我认为您要求存储X个以前的记录(使用零件ID),以便用户可以返回到(可能最多X个)以前的记录。这是正确的吗?如果是这样,那么我建议使用创建后进先出堆栈,并使用该堆栈跟踪您以前的零件ID列表。
Call Me.Parent.AddAndJump(Me.ID)