如何在大型访问表单中转到我最后输入的记录?

How do I go to my last entered record in a large access form?

我有一个大型 Access 数据库,其中包含具有一对多关系的项目 (70,000+)。每条记录都有一组分析结果,例如 记录 1 具有样本 ID sample1: chlorine=1mg/lsample 2: chlorine=2.3mg/L; 记录 2 具有样本 ID sample1: chlorine=3.8mg/L.

我已经创建了一个表单来开始输入数据,但我想创建一个宏按钮,将我带到最后输入的记录。一旦我开始记录 #100+,我就不想记住我上次记录的编号。

为了使这个问题复杂化,一些记录没有分析数据并且将为空。
我在想一个将搜索空记录的宏。一旦找到空记录,它将通过检查接下来的 50 条左右记录来仔细检查它是否不是先前输入的记录,该记录恰好为空,并确保它前面的每 50 条记录也为空。有人可以给我一些关于如何使用宏执行此操作的指导吗?一旦我有了一个工作宏,我就知道如何将它应用到我表单上的按钮。

谢谢。

您可以创建一个 table 来存储来自您的表单的已添加书签的记录编号:

然后设置您的表单,以便您有一个命令按钮来为您的位置添加书签:

然后在该按钮的点击事件中,您可以获取当前记录的记录号并将其放入您的书签中table以备后用:

Private Sub cmdSavePlace_Click()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim sql As String

    Set db = CurrentDb

    sql = "DELETE * FROM tblLastAccessedRecord"
    db.Execute sql

    Set rs = db.OpenRecordset("tblLastAccessedRecord")

    With rs

        rs.AddNew
        rs!RecordNumber = Me.CurrentRecord
        rs.Update

    End With

    rs.Close
    Set rs = Nothing
    Set db = Nothing

End Sub

然后,您可以在表单中添加一个命令按钮,使用当前存储在 table:

中的记录编号,将您移至保存的书签后的下一条记录

以下 VBA 应将您跳转到 (+1) 存储在您的书签 table 之后的记录:

Private Sub cmdGoToNext_Click()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = CurrentDb
    Set rs = db.OpenRecordset("tblLastAccessedRecord")

    DoCmd.GoToRecord acDataForm, "frmDataEntry", acGoTo, rs!RecordNumber + 1

    rs.Close
    Set rs = Nothing
    Set db = Nothing

End Sub

因此,例如,如果我将记录 11 添加为书签...

...这现在存储在我们的 table:

因此,如果我们关闭当天的表格,明天再回来填写表格,我们可能会回到记录 1...

...但是如果我们点击进入书签记录命令按钮,我们将被带到记录 11+1,即记录 12:

哇,开箱即用的答案和我正在寻找的东西。该问题需要一个按钮,我们提供了一个。

不过,为了我的目的,只是以此为基础,从 ummm,afterUpdate 控件触发的宏/代码的开销很小,我猜,在正在编辑的表单上,它更新了值tblLastAccessedRecord 中的记录。除非 OnUnload 仍然可以访问记录值,在这种情况下,您可以在关闭表单时自动设置它,但我不确定它是否有。