【问题标题】:Access VBA - Help designing a Join formAccess VBA - 帮助设计联接表单
【发布时间】:2016-05-02 01:20:05
【问题描述】:

我有一个 JoinTable、Table1 和 Table2。这是设计(示例):

JoinTable:
IDx
IDy

Table1:
IDx
Names
Surnames

Table2:
IDy
Address
City

现在,我将创建一个表单,该表单将具有 JoinTable 的 Recordsource。在这个表单中,我将有 2 个组合框,我将从表 1 或表 2 中选择记录。基于组合框选择(即 IDx 或 IDy),我想查看相关表中的字段值....示例:

如果我从组合框 IDx 中选择,我希望在同一记录下(在 JoinTable 中加入)以连续形式查看 Table2 中的字段值。

我已经设法用子表单来做到这一点,但是我有很多记录在相同 ID 下加入 JoinTable,所以当有很多匹配项时,通过子表单列出并不好,因为子表单不会最大化表单已最大化(我也尝试过使用 Iszoommed API,但仍然不好 - 由于滚动条出现/消失,屏幕闪烁)。

有没有人知道如何在同一个表单中浏览两个表的记录,并且没有子表单,以便我可以最大化表单并轻松查看所有相关记录?

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    您可以在 Access 中使用子表单执行此操作。
    至于设计问题,您可以使用other code(我在谷歌上搜索ms access subform auto resize发现了一些好主意),但闪烁可能会留在那里:Access 和所有 Office 应用程序一样,不会支持多线程,操作系统将不得不暂停 GUI 进程以允许其他进程运行,并且用户会看到“闪烁”。

    【讨论】:

    • 我建议您在这些闪光灯上发布一个问题,看看会发生什么。因为如果不使用子表单,为什么要在 Access 中使用?...
    • 感谢@marlan 的回复,但实际上我已经解决了它,没有使用子表单。这是一个需要解决很多设计问题和一些 VBA 编码的程序,但它确实有效。如果我可以在这里发布一个示例,我会展示它。
    【解决方案2】:

    我已经解决了。你必须做的有点难以解释,但总的来说:

    1. 当您创建一个包含来自 JoinTable 的记录源的表单时 - 您必须构建一个记录源查询,其中包含来自 JoinTable 的 ID 以及您希望查看的相关表中的所有其他字段。

    2. 在此表单上,您可以从在 JoinTable 中链接的 2 个表中添加字段。如果需要,您可以根据您想要执行的搜索隐藏/取消隐藏这些字段(通过每个表格的组合框或其他内容)。

    3. 然后你必须 VBA 代码它,我的解决方案是这样的 - 我在表单上放置了 2 个选项按钮。选择其中一个时,将显示一个组合框,并且将搜索表中的字段(此时隐藏其他组合框和其他表中的字段)。代码是这样的(例如上面的例子):

      将 SQL 变暗为字符串

            SQL = "SELECT JoinTable.IDx, JoinTable.IDy, Table1.Names, Table1.Surnames" & _
                " FROM Table1 INNER JOIN JoinTable ON Table1.[IDx] = JoinTable.[IDx] " & _
                  " WHERE JoinTable.IDx=" & Me.MyCombo
      
            If IsNull(MyCombo) = True Then
      
                Me.RecordSource = ""
      
            Else
      
                Me.RecordSource = SQL
      
            End If
      
    4. 将此代码放在 Combobox_After_Update 和 Option 按钮的 Click_Event 中,就是这样。现在,您可以使用 JoinTable 和相关表的 ID 以及不使用子表单的一个表单中的相关(连接)记录导航,这样您就可以根据需要最大化您的表单。

    【讨论】:

      猜你喜欢
      • 2011-11-22
      • 1970-01-01
      • 2011-04-21
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      相关资源
      最近更新 更多