【问题标题】:Move to next record recordset after query in access vba在访问 vba 中查询后移动到下一个记录记录集
【发布时间】:2015-04-01 05:28:42
【问题描述】:

这是我的第一个问题,但我不得不说这不是我第一次使用该网站。还有一件事,对不起我的英语......

我正在使用 Access 2007 中的一个项目,其中包含大量 VBA 代码和大量前端表单。在表单中,我包含了记录导航按钮,供用户在表的不同记录(下一个、上一个等)之间移动。

但是,我有一个问题,我不知道如何解决。假设用户输入了一个表单。自然地,表单显示了表中包含的第一条记录。在表单中,用户可以搜索记录并转到指定的记录。

获得该记录后,用户按下按钮以显示下一条记录。但是,它没有进入下一个,而是进入第一个之后的记录。换句话说,表单转到第二条记录。

我猜是因为表单的记录集没有更新,所以当用户按下下一个按钮时(实际上我正在做一个docmd.gotorecord acNext),它会转到表中的下一条记录(第二记录)。

我尝试通过表单记录源方法进行查询后更新记录集,但仍然出错...

什么是最实用的解决方案?

谢谢!

【问题讨论】:

  • 您能解释一下您是如何执行搜索功能的吗?您有一些代码可以展示给我们吗?
  • 嗨,SCB。嗯,搜索功能很简单。我有一个不可见的表的主键,当用户选择想要查看信息的客户时,搜索结果会这样做:DoCmd.OpenForm "Customers", , , "ID=" & Me。 search_customers_subform.Form.ID & "" 然后下一个按钮执行此操作: Me.FilterOn = False DoCmd.GoToRecord , , acNext
  • 刚刚发布了一条不同的评论,要求澄清,但我记错了打开表单上的逗号,这确实有道理。会尝试为你想出一些东西。

标签: forms vba ms-access-2007


【解决方案1】:

您的问题来自这样一个事实,即当您将过滤器设置为 false 时,实际上是重新设置了整个表单。

要解决这个问题,您可以在搜索命令中试试这个:

DoCmd.OpenForm "Customers"

' This assumes that you've got a control on the customers form named ID which has the IDs in it
DoCmd.GoToControl "ID"

DoCmd.FindRecord Me.search_customers_subform.Form.ID

当点击下一步时,你现在只需要:

DoCmd.GoToRecord , , acNext

过滤器不存在了。

希望这对你有用。我现在没有Access,所以这段代码主要来自记忆,如果有任何问题,请随时询问。

【讨论】:

    猜你喜欢
    • 2015-02-09
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2021-09-30
    相关资源
    最近更新 更多