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

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

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

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

【问题讨论】:

    标签: ms-access vba ms-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" 将显示第一个条目。您无需指定应与偏移量匹配的字段。我相应地编辑了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多