我可以创建一个表单来从Access中的多个(不相关)表中获取记录数据吗?

时间:2013-03-17 12:04:22

标签: ms-access ms-access-2007

我只知道Access的基础知识,因此我无法弄清楚如何制作一个可以访问多个不相关表格的表单。

我的问题:

我有几张描述不同卡片集的表格。我无法将它们链接起来,即使我可以,例如按卡名称。这是因为我想将列表分开。但是,我想创建一个可以访问所有表单的表单,这样每次我想更新卡数据库时,我都不需要点击不同的表单。无论如何,我包含的表格越多,实际上就越不实用。我试过看了这个,有几个网站似乎建议像sql一样的语句作为解决方案,但坦率地说这些飞过我的脑袋 - 我甚至不知道我在哪里写它们!

所以我想要的是一个表单,其中有一个组合框菜单来选择我想要编辑的表,然后是另一个框来选择我想要看到的卡,并且我可以编辑该卡的详细信息。如果我为一个表创建一个表单,我可以这样做,但我不知道如何为许多表执行此操作。如果我添加它们,我还希望检查新表。例如。卡有不同的系列出来,所以当一个新的出来我会为它创建一个新表,添加卡等等...

我意识到这可能非常繁琐,特别是在Access中,但如果有人能给我一些如何做到这一点的指导,那将非常感激。 (我正在使用Access 2007)

2 个答案:

答案 0 :(得分:1)

回答你的问题:  使用子表单。创建几个子表单和组合框,并根据需要隐藏/显示表单。

更好的方法:

为每种卡类型创建单独的表是一种非常糟糕的做法。如果卡片共享MonsterName,MonsterPowerType等功能,您应该创建另一个表格card_types,并在卡片表中添加card_type字段。然后,如果您只需要获取口袋妖怪卡片,请使用card_type_id = xxcard_type_name = "Pokemon"标准创建查询。 这样您只需要一个表单,并且可以使用组合框更改card_type条件。

答案 1 :(得分:1)

这是相当古老的,但它可能对其他人有所帮助。我确实想办法完全按照你的要求进行操作

我只能访问2016,所以事情可能在不同的地方,但不是那么多。 首先,为每个套牌创建所有表格。确保你在第一列:唯一ID,第二列是牌组的名称(它对于这个牌组中的每个条目都是相同的)这将有助于我们。第三列是卡的名称。其他列将包含您的卡的其他值,但对于我的示例,它并不重要。 我会像这样命名他们

column   name
1       unique_ID
2       DeckName
3       CardName

现在,在标签中"创建"选择"查询设计"。然后在标签" home"在seciton Views中,选择SQL。 在blanck部分输入此内容 我有2张桌子: 表1和表2

  

SELECT Table1.DeckName FROM Table1 UNION SELECT   Table2.DeckName FROM Table2;

您必须添加每个表并在每个表之间添加 UNION 。你只用一个半昏迷;

完成句子

点击运行,您应该获得所有DeckName。 保存您的查询并关闭它。

现在,我们希望组合框帮助我们在不同的套牌之间进行选择。 在标签中" 创建"选择" 空白表单"。转到" 主页/观看次数"选择" 设计"。在" 设计"选项卡,选择组合框。您可以单击取消并跳过向导 在酒店中,点击" rowsource "并选择您创建的查询。 将其命名为 Cmb_Deck

添加第二个组合框 将其命名为 Cmb_Name 。 property" 列数"把" 2"因为这个组合框会显示卡片的名称,在我们的表格中是第2列。要有点花哨,我们将隐藏第一列,在属性" 列宽&# 34; put" 0&#34 ;; 1" " (第一列0英寸,第二列1英寸)。

将您创建的任何表拖到表单中,然后在向导出现时单击“取消”。 将其命名为 TableResult

现在已经创建了布局,我们需要根据组合框 Cmb_Deck 更改表格。 在 Cmb_Deck 属性中,转到事件部分,然后选择" 更新后"点击" ... "然后选择Code Builder 在此Visual Basic编辑器窗口中:删除那里的所有内容并输入此

Option Compare Database

Private Sub Cmb_Deck_AfterUpdate()
TableResult.SourceObject = "Table." & Cmb_Deck.Value
Cmb_Name.RowSource = "Table." & Cmb_Deck.Value
End Sub


Private Sub Cmb_Name_AfterUpdate()
        Me.TableResult.Form.Filter = "([" & Cmb_Deck.Value & "]." & "[CardName]=""" & Cmb_Name.text & """)"
        Me.TableResult.Form.FilterOn = True
End Sub

现在返回访问权限,选择你的组合框Cmb_Name并进入属性事件/ afterupdate并选择" [事件过程]

现在,在您的表单中,转到主页/视图,然后选择表单视图。首先在第一个组合框中选择一个平台,然后在第二个组合框中选择一个卡的名称。现在下面的表格只显示您想要看到的卡片。

我希望这会有所帮助

-Mathieu Paquin