0

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

我的问题:

我有几张表来描述不同的卡片收藏。我无法将它们链接起来,即使我可以,例如通过卡名。这是因为我想将列表分开。但是,我确实想创建一个可以访问所有这些表单的表单,这样我就不需要在每次想要更新卡片数据库时都点击不同的表单。无论如何,我包含的表格越多,它就越不实用。我已经尝试查找此内容,并且有几个站点似乎建议将类似 sql 的语句作为解决方案,但坦率地说,这些都在我的脑海中浮现——我什至不知道我会在哪里写它们!

所以我想要的是一个表单,它有一个组合框菜单来选择我想要编辑的表格,然后是另一个框来选择我想要查看的卡片,嘿,我可以编辑该卡片的详细信息。如果我为一张桌子制作一张表格,我可以做到这一点,但我不知道如何为许多桌子制作。如果我添加它们,我还希望它检查新表。例如,卡片有不同的系列出来,所以当一个新的出来时,我会为它创建一个新表,添加卡片等等......

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

4

2 回答 2

1

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

更好的方法:

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

于 2013-03-17T15:06:30.297 回答
1

这已经很老了,但它可能会帮助其他人。我确实想出了一个方法来完全按照你的要求做

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

column   name
1       unique_ID
2       DeckName
3       CardName

现在,在“创建”选项卡中选择“查询设计”。然后在“视图”部分的“主页”选项卡中,选择 SQL。在空白部分输入这个我有 2 个表:Table1 和 Table2

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

您必须添加每个表并在每个表之间添加一个UNION。你只用一个半昏迷结束这句话

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

现在,我们希望组合框帮助我们在不同的牌组之间进行选择。在“创建”选项卡中选择“空白表格”。转到“主页/视图”选择“设计”。在“设计”选项卡中,选择组合框。您可以单击取消并跳过向导 在属性中,单击“行源”并选择您创建的查询。将其命名为Cmb_Deck

添加第二个组合框,将其命名为Cmb_Name。属性“ Column Count ”放“2”,因为这个组合框将显示卡片的名称,即我们表格中的column2。为了有点花哨,我们将隐藏第一列,在“ Column Widths ”属性中放置“ 0";1" "(第一列 0 英寸,第二列 1 英寸)。

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

现在布局已创建,我们需要根据组合框Cmb_Deck更改表格。在Cmb_Deck属性中,进入事件部分并选择“更新后”单击“ ... ”并选择代码生成器 在此 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 并进入属性 event/afterupdate 并选择“ [Event Procedure]

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

我希望这有帮助

——马修·帕奎因

于 2016-12-17T03:48:07.673 回答