如何在大型访问表单中转到我最后输入的记录?
Posted
技术标签:
【中文标题】如何在大型访问表单中转到我最后输入的记录?【英文标题】:How do I go to my last entered record in a large access form? 【发布时间】:2015-12-03 22:52:04 【问题描述】:我有一个包含一对多关系的大型 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 条记录也是空的。有人可以给我一些关于如何使用宏来做到这一点的指导吗?一旦我有了一个工作宏,我就知道如何将它应用到我的表单上的按钮上。
谢谢。
【问题讨论】:
请:每个问题只有 一个 问题。 如果您已将表单绑定到表格,则导航栏上应该有一个按钮可将您带到最后。除非那不是你的意思? 结束记录是 76800,但我需要一种方法来获得例如 4371。已经有 76800 条记录了,但是还没有一条记录完所有的数据。一天输入完数据后,我希望第二天能够打开数据库并从原来的位置继续输入数据。 好的,你知道你需要 4371 吗?你怎么知道 4371 是需要移动到的记录? 不,4371 是一个示例编号。除非我记下前一天的号码,否则我不会知道我需要哪个号码。我需要的号码只是我上的最后一个号码。我从 1 开始工作到 76,800。例如,在第一天结束后,我完成了 432 条记录。第二天,我需要从记录#433 开始。然后第 2 天说我完成了 217 条记录,然后第 3 天我将开始记录 (433+217+1)=551。我不想写下我每天上的最后一个数字,而是想创建一个按钮,将我直接发送到我输入数据的最后一条记录。 【参考方案1】:您可以创建一个表格来存储表单中带有书签的记录号:
然后设置您的表单,以便您有一个命令按钮来为您的位置添加书签:
然后在该按钮的点击事件中,您可以获取当前记录的记录号并将其放入您的书签表中以供以后使用:
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
然后,您可以在表单中添加一个命令按钮,使用当前存储在表中的记录号将您移动到保存的书签之后的下一条记录:
以下 VBA 应将您跳转到 (+1) 已存储在您的书签表中的记录之后的记录:
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 加入书签...
...现在存储在我们的表中:
因此,如果我们关闭当天的表格,明天再返回表格,我们可能会回到记录 1...
...但是如果我们单击转到书签记录命令按钮,我们将被带到记录 11+1,即记录 12:
【讨论】:
哇!干得好,这是一个彻底的答案,我很欣赏这些照片。谢谢【参考方案2】:哇,开箱即用的答案和我正在寻找的东西。该问题需要一个按钮,并且提供了一个按钮。
不过,为了我的目的,只是在此基础上进行一点构建,我猜想,在正在编辑的表单上,从更新tblLastAccessedRecord 中的记录。除非 OnUnload 仍然可以访问记录值,在这种情况下,您可以在关闭表单时自动设置它,但我不确定它是否会。
【讨论】:
以上是关于如何在大型访问表单中转到我最后输入的记录?的主要内容,如果未能解决你的问题,请参考以下文章