【问题标题】:How to create "Go To Next" record button in Access Form that references an alternate form如何在引用备用表单的访问表单中创建“转到下一个”记录按钮
【发布时间】:2026-01-31 17:35:01
【问题描述】:

在我的 Access dB 中,我有一个表单(“frmSearch”)和一个引用查询(“qryDynamicData”)的子表单(“subFrmData”)。

主窗体有 6 个下拉菜单,用于过滤子窗体中的数据表。组合框是级联的,因此一旦您选择了一个,其余组合框中显示的条目只是查询中与第一个选择相关的条目。目标是使子表单数据表中的数据越来越短。以下是组合框中的字段:

  • 地区
  • 客户经理
  • 经理
  • 工程师
  • 舞台
  • 项目编号("ProjectSLCT")

当用户过滤到他们正在查看的项目列表足够小的位置时,他们会使用最后的组合框(“项目编号”)从表中选择一个条目。这样做会打开另一个表单(“MPC_ProjectNotes”)作为弹出表单,他们可以在其中跟踪项目细节。事件如下所示:

DoCmd.OpenForm "MPC_ProjectNotes", , , "Project_Number= '" & Me.ProjectSLCT.Value & "'"

我想在“MPC_ProjectNotes”表单上创建一个“下一个记录”按钮,这实际上允许他们执行在 ProjectSLCT 下拉列表中选择下一项的步骤,从而使用组合中的下一项重新启动 MPC_ProjectNotes 表单框(以及“subFrmData”中的数据表),而无需关闭 MPC_ProjectNotes 表单并调整组合框。

有什么想法吗?我什至不知道用谷歌搜索什么来让自己在这方面指出正确的方向。似乎“下一个按钮”通常不会设置为跨表单工作。

【问题讨论】:

  • 代码如何知道组合框列表中的“下一个”项目是什么? - 确定这可能会变得非常复杂。为什么不使用子表单来显示与项目相关的注释?注释子窗体可以位于项目子窗体旁边的主窗体上。在fmsinc.com/MicrosoftAccess/Forms/Synchronize/LinkedSubforms.asp 中描述的完成技巧。导航项目子窗体和注释子窗体应该只显示相关记录。

标签: forms ms-access button


【解决方案1】:

好的,这是我的建议:

代替启动表单 MPC_ProjectNotes 到一个记录?

为什么不启动具有相同条件的表单并作为组合框 ProjectSLCT 列出。

现在,我们当然会登陆 ProjectSLCT 的第一个记录。但这可能没关系!

现在说 ProjectSLCT 是否不在第一条记录中?然后我们只需要添加一个额外的步骤:将表单移动到正确的记录。

所以,逻辑是这样的:

将第二个表单启动到与组合框相同的“列表”。 将第二个表单移动到组合框中当前选定的 SAME 项目。

现在,您甚至不必编写下一个/上一个按钮,而是可以简单地显示内置导航按钮。由于表单仅限于同一个列表,因此该表单中的常规导航将有效且有效,而无需您编写任何代码!

所以在你的第一个形式的某个地方,你最终会得到这个:

combobox data source = select * from tblWhoKnows where (CRITERA GOES HERE!!!).

所以,现在我们用这个简单地启动第二种形式:

DoCmd.OpenForm "MPC_ProjectNotes", , , (CRITERA GOES HERE!!!)

现在表单加载了相同的列表。我们只需这行额外的代码即可将表单移动/跳转到组合中的当前选定行。

forms("MPC_ProjectNotes").RecordSet.FindFirst "Project_Number= '" & Me.ProjectSLCT.Value & "'"

所以我们将表单打开到“列表”,然后跳转到选中的相应组合框。结果是您可以在组合列表中导航的表单,但我们从表单中的该列表中跳转/开始了同一个组合框选定项目。

所以代码看起来像这样:

DoCmd.OpenForm "MPC_ProjectNotes", , , (CRITERA GOES HERE!!!)
Forms("MPC_ProjectNotes").RecordSet.FindFirst "Project_Number= '" & Me.ProjectSLCT.Value & "'"

您当然会将上述“CRITERA”“更改”为您在代码中用于填写最后一个组合框的相同标准。

【讨论】: