从子窗体访问去记录

Posted

技术标签:

【中文标题】从子窗体访问去记录【英文标题】:access go to record from subform 【发布时间】:2017-07-18 10:16:05 【问题描述】:

我在 Access 2010 中有一个联系人数据库。我制作了一个显示所有联系人信息的表单,但我需要一种在联系人之间轻松导航的方法。我制作了一个搜索框,并且我有一个查询,该查询使用与搜索匹配的名称的列表更新一个连续的子表单。现在我需要一种方法,以便能够单击子表单中的名称以转到主表单中的该记录。

使用拆分表单我会得到我需要的东西,但是当我有标签或导航表单时它不起作用。此外,对于我的目的,连续子表单看起来和工作得更好。

Access 2010 中的联系人模板几乎就是我要找的,搜索框和结果列表在左侧,但我无法使用或复制该模板。

【问题讨论】:

【参考方案1】:

如果您使用连续子表单,只需在子表单详细信息部分使用点击事件即可。

1.在详细信息部分内单击,然后转到属性侧栏的事件选项卡。

2.进入“On Click”,选择代码生成器进入vba自动获取你的进程的基本环境

3.粘贴以下代码并根据需要进行修改。

DoCmd.GoToRecord acDataForm, "yourmainform", acGoTo, sub_fieldname

假设您有以下设置: frm_contact 是您的主要表单。

sub_contactlist 是您的子表单,显示所有列出的姓名

contact_id 是您的表单(主表单和子表单)的唯一标识符

sub_contactlist 的详细信息部分的最终结果应该是这样的。

Private Sub Detail_Click()
DoCmd.GoToRecord acDataForm, "frm_contact", acGoTo, contact_id
End Sub

“contact_id”指的是子表单中的当前联系人条目。它也可能有不同的命名。为了清楚起见,您还可以使用“Me.contact_id”。代码将跳转到唯一标识符与偏移量匹配的条目(在本例中为:contact_id)。

如果您不使用详细信息部分子表单,而是使用主表单上的按钮或类似内容,您甚至可以将“acDataForm”和“frm_contact”留空。

注意:我通常建议在处理代码时尽可能省略空格。如果您的名字中有空格,请将它们放在方括号中。否则你会得到一个错误。有些人通常使用方括号来以某种方式突出显示代码中的字段。我没有。

【讨论】:

我试过了,但是没有用。我是使用 VBA 编程的新手,对语法还不是很熟悉。我可以将其复制并粘贴到代码生成器中吗?我需要改变什么? 我已经编辑了我的答案。如果事情还不清楚,请告诉我。 我仍然收到一条错误消息。调试器只是突出显示整行,根本没有帮助。我已经准确地复制了代码并输入了适当的值,但我无法让它工作。 大多数情况下什么都没有发生,但最终我收到消息:“运行时错误 2498:您输入的表达式是其中一个参数的错误数据类型” 啊,非常抱歉。我混淆了一些东西。代码需要一个偏移量,而不是“where”条件。设置一个数字将根据其唯一标识符自动跳转到定义的条目。因此 "DoCmd.GoToRecord, , acGoTo, 1" 将显示第一个条目。您无需指定应与偏移量匹配的字段。我相应地编辑了答案。

以上是关于从子窗体访问去记录的主要内容,如果未能解决你的问题,请参考以下文章

从子窗体调用主窗体

如何在 Windows Forms 2.0 中从子窗体关闭父窗体?

DevExpress TabbedView : 从子窗体创建子窗体

如何将值从子窗体传递回父窗体?

如何在 Ms 访问子窗体中显示记录集数据

基于主窗体中的字段访问2007过滤器子窗体?