如何在大型访问表单中转到我最后输入的记录?
How do I go to my last entered record in a large access form?
我有一个大型 Access 数据库,其中包含具有一对多关系的项目 (70,000+)。每条记录都有一组分析结果,例如
记录 1 具有样本 ID sample1: chlorine=1mg/l
、sample 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 仍然可以访问记录值,在这种情况下,您可以在关闭表单时自动设置它,但我不确定它是否有。
我有一个大型 Access 数据库,其中包含具有一对多关系的项目 (70,000+)。每条记录都有一组分析结果,例如
记录 1 具有样本 ID sample1: chlorine=1mg/l
、sample 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 仍然可以访问记录值,在这种情况下,您可以在关闭表单时自动设置它,但我不确定它是否有。