在 Access 数据库表格上列出具体要求

Listing specific requirements on Access Database form

我正在尝试使用 Microsoft Access 数据库创建数据库,但我遇到了问题。我想创建一个数据库来保存计算机组件的信息,并创建一个表格来列出构建计算机的某些组件。

比如我要搭建电脑A,我有一个所有硬盘的列表:hdd1、hdd2、hdd3、hdd4、hdd5,但是只有hdd2和hdd4兼容。

我的方法是(粗体 = 主键,斜体 = 外键:

HDD (hhd#, 大小, 成本,compA, compB, compC)

COMP(comp#, hdd#)

这是正确的方法吗?

Please Note:

I've provided an answer here because I'm feeling nice, but in future do bear in mind that your question is a bit too broad to be useful on this site. However if you're a beginner, hopefully this will of some help.

I've mocked-up my own example based on your descriptions purely to illustrate an idea on how to approach this.

我创建了 2 个 table。首先,tblCompBuilds 将列出计算机版本。这是它的结构:

...这里有一些虚拟数据:

我创建的另一个 table 是 tblHdds,它将列出硬盘驱动器和一些规格。这是它的结构:

...这里有一些虚拟数据:

已经决定我将使用出现在两​​个table中的HddFormFactor字段来确定硬盘驱动器记录是否存在tblHdds 中的内容与 tblCompBuilds 中的计算机记录兼容。

这是一个重要的问题,您在设计数据库和表单时需要问自己...

"what data can I use to establish that a hdd is compatible with a computer?"*

对于我的示例,我发明了 1 个字段,但您可能需要应用一组更复杂的标准(可能需要考虑多个字段和不同的条件/情况)。

无论如何,一旦我确定了数据以及我打算如何显示兼容的 HDD,我需要制作一个表格,让我可以 select 计算机构建和兼容的 HDD。

创建空白表格后,我通过单击 top-left 方块 select 表格;黑色方块表示表格是 selected:

在 属性 Sheet 表单中,我转到 "Data" 选项卡并针对记录源 属性 我使用下拉菜单查找 select tblCompBuilds table:

这会将表单绑定到此 table,这意味着您可以将绑定的字段 table 添加到此表单,并使用表单在这些记录中移动以显示它们。

我不将绑定 table 中的字段添加到表单,而是使用组合框向导(组合框本质上是一个 drop-down 选项列表。

首先我声明我想从 table 中获取我的组合框的选项。这是因为 tblCompBuilds table 中 ComputerBuildName 字段下列出的数据将给我可供选择的计算机列表:

然后我指定 table...

...然后是字段:

在这种情况下,我只使用 IDComputerBuildName 字段。 ComputerBuildName 字段将是用户在使用组合框时看到的选项,ID 字段将在以后使用组合框操作表单时帮助我。

然后我指定一个顺序,我希望组合框中的选项出现。由于字段 ComputerBuildName 中的数据最终是我想要在组合框中显示的内容,因此按字母顺序向用户显示此内容是有意义的:

最后,您可以指定组合框中显示的列的宽度;我倾向于忽略这一点并稍后手动执行(请注意,我已经要求向导隐藏我的主键字段,即 ID 字段):

如果您进入窗体视图,组合框如下所示:

所以我们现在可以select 构建我们的计算机,接下来我们需要显示related/compatible HDD。有很多不同的方法可以做到这一点,但我将使用 子表单 .

来说明这一点

向您的表单添加子表单并通过子表单向导;首先指定我想使用现有的 table:

...然后我指定 table (tblHdds) 和我要显示的字段:

下一阶段是我们指定如何关联我们表单上的记录(我们之前通过将其记录源设置为tblCompBuilds) 到我们的 子表单 上的记录(我们刚刚指定为 tblHdds)。

子表单向导将尝试通过查找 table 中绑定到具有 相同名称[=201= 的表单和子表单的字段来提供表单和子表单之间的关系].

当我设计 table 时,我小心确保:

  1. 会有一个字段 (HddFormFactor) 与 tblCompBuildstblHdds,以及
  2. 此相关字段在 table 中的名称 完全相同

这意味着已经有一个关系在等待我在子表单向导中选择,而不必尝试创建我自己的关系:

在 select 之后,我希望我的表单的 tblCompBuilds 记录与我的子表单的 tblHdds 记录相关,使用 HddFormFactor 我只需要命名我的子表单即可完成向导:

在表单视图中,表单现在应该如下所示:

我们想要发生的是,当您从 Computer Build 组合框中 select 一台计算机时,HDD 的子表单将更新o 仅列出具有兼容 HDD 外形规格的那些。

如果您尝试这样做,子表单不会更新。

注意在表单和子表单的底部有一些关于绑定到表单和子表单的记录的信息:

当您select组合框中的任何计算机构建时,请注意表单的记录号没有改变;它只停留在 3 个中的 1 个上,不会 移动

子表单 无法更新,因为当前为表单 加载的记录不会更改,因此与其相关的子表单也不会更改。

要使用组合框更改表单上加载的记录,我们需要使用一些 VBA。

进入设计视图,select 计算机构建组合框,然后从 属性 Sheet 的 "Event" 选项卡中单击 [...]针对“更新后”事件的按钮:

Select "Code Builder" 然后您将被带到 VBA 编辑器,其中已经为您编写了以下代码:

Fill-out组合框的更新后中间VBA所以它是这样写的:

Private Sub cboCompBuild_AfterUpdate()

    Dim rs As DAO.Recordset

    Set rs = Me.RecordsetClone

    rs.FindFirst "[ID] = " & Me.cboCompBuild

    Me.Bookmark = rs.Bookmark

    Set rs = Nothing

End Sub

注意cboCompBuild是我给组合框起的名字。您需要确保 VBA 中的这一行指的是您所称的组合框的名称;您可以在 属性 Sheet:

中找到组合框的名称

返回到表单视图,希望当您 select 不同的计算机版本时,子表单应该更新以显示兼容的。

您可以从这里做更多的事情,例如将子表单的允许添加 属性 设置为 "No" 这样您就不会在底部看到奇怪的空记录。如果您不希望用户能够更改子表单绑定 table (tblHdds) 中的数据,您可能还需要考虑禁用子表单的编辑和删除。同样值得注意的是,对于 VBA,我使用了 Allen Browne 方法的 watered-down 版本 Using a Combo Box to Find Records;他的完整版本比我用于快速说明的版本更强大。

Here's a link to Access file I created for this example.

希望对您有所帮助。