访问VBA - 帮助设计加入表单

时间:2016-05-01 10:29:27

标签: vba ms-access access-vba

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

JoinTable:
IDx
IDy

Table1:
IDx
Names
Surnames

Table2:
IDy
Address
City

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

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

我已经设法用子表单执行此操作,但我有很多记录在JoinTable中以相同的ID加入,因此当存在大量匹配时,通过子表单列表并不好,因为子表单&#当形式最大化时,我不会最大化(我也尝试使用Iszoommed API,但它仍然不好 - 因为滚动条出现/消失而导致屏幕闪烁)。

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

2 个答案:

答案 0 :(得分:0)

您可以使用子表单在Access中执行此操作 至于设计问题,你可以使用other code(我发现了一些很好的想法谷歌搜索 ms访问子表格自动调整大小),但闪存可能会留在那里:Access,作为所有Office应用程序,不支持多线程,操作系统将不得不暂停GUI进程以允许其他进程运行,并且用户看到“闪烁”。

答案 1 :(得分:0)

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

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

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

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

    Dim SQL As String

          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和Click_Event of Option按钮中,以及它的It。现在,您可以使用相关表中的字段,使用JoinTable和相关表的ID以及没有子表单来浏览一个表单中的相关(已连接)记录,以便您可以根据需要最大化表单。