【问题标题】:MS Access database with a lot of manual data entry [closed]具有大量手动数据输入的 MS Access 数据库[关闭]
【发布时间】:2021-10-15 07:23:19
【问题描述】:

我正在 Access 中构建一个数据库,用于记录变电站负载。有 50 个变电站,每个变电站有 4 到 10 条馈线,数据是流经这些馈线的电流,所有数据都是手动输入的。

我应该如何处理这个数据库的用户界面?我应该创建 50 个表单还是有更好的方法来做到这一点?

我应该补充一点,我还想让它尽可能动态化(用户可以在其中添加新的变电站),因此我在制作 50 个单独的表格时犹豫不决。

这就是我的想法:一个单一的表单,您可以在其中循环浏览变电站表中的每个变电站,然后在表单中填充特定于该变电站的馈线的文本框(使用关系)。

鉴于我对软件的了解有限,执行此操作需要一个宏来创建文本框并自动执行边界、命名、定位等,而我没有任何运气在网上找到类似的东西。

Something like this image.

【问题讨论】:

  • 这类问题与 Stack Overflow 无关,这是一个关于调试代码的网站。 Stack Exchange 网络中还有其他站点,例如 dba.stackexchange.com,它们更适合数据库设计问题。即使在那里,这个问题也可能过于开放而无法成为话题。像这样的公开讨论更适合forum,您可以在那里进行长时间的讨论。这是一个问答网站,一问一答。
  • User 785... 概述了您创建规范化表的第一步。所以一遍又一遍地查找数据库表规范化,直到你得到它。您可能已经想到了数据输入表单,从表格中制作该表单是第二步。一旦你有了你的表格并使用关系工具将它们连接起来:点击每个表格并点击功能区上的创建表格。使用 Access 制作的表单并了解它们的工作原理。然后开始更改它们,直到您将表格放在脑海中。想想大理石块中的 Bansai 树或大象

标签: vba ms-access ms-access-2013 data-entry


【解决方案1】:

我不确定你的问题有多大。另外,我不知道您对 Access 有多熟悉。由于没有这些问题的答案,因此需要考虑 2 个一般性问题。

  1. 数据库本身 - 数据存储
  2. 用户界面。

为了让您顺利进行,我将介绍数据库部分。我通常会首先为 50 个变电站创建一个表。使用我将设置为 AutoIncrement 的主键创建它。创建第二个表,列出所有 50 个变电站的所有馈线。根据您列出的信息,这意味着该表将有 200 到 500 条记录。该表还应该有一个主键(也可以自动递增),但它还将包括一个来自变电站表的主键字段,然后它将正确地将馈线与适当的变电站相关联。该馈线表将是所谓的子表,因为它依赖于变电站表。如果馈线不是专用于特定的变电站,则更复杂的是。在这种情况下,您将需要第三个表,这是一个多对多表。它将需要自己的主键,并将包括来自变电站和馈线表的主键。这允许任何一个馈线与尽可能多的变电站相关联。

我会为用户界面提供一些指导,但没有足够的信息来做到这一点。

我看到你添加了一些信息。我假设馈线专用于单个变电站,单个变电站可能有多个馈线。但没有任何馈线服务超过 1 个变电站。

在此假设下,原始数据库概念适用 - 父表(变电站)和子表(馈线)。

很高兴您提供了插图,因为它定义了需要输入的数据。但是建议的制作用户界面的方法需要太多的工作,并且会减慢用户界面的速度。如果您按照上述方式设计数据库,则在馈线表中有一个用于变电站 ID 字段的字段。然后创建一个绑定到 substations 表的主窗体,并使用下拉菜单选择一个变电站。在这个表单中添加所谓的子表单——实际上只是另一种表单,但它并不独立。相反,它会像任何其他控件一样加载到主窗体上。使其绑定到馈线表。链接父/子属性,当您从下拉列表中选择一个变电站时,子表单将自动显示属于该变电站的每个馈线的记录。

这是一个关于使用带有子表单的表单的 Microsoft 链接: https://support.microsoft.com/en-us/office/create-a-form-that-contains-a-subform-a-one-to-many-form-ddf3822f-8aba-49cb-831a-1e74d6f5f06b

在 YouTube 上也可以找到各种关于子表单的教程。如果假设正确,则馈线仅用于 1 个变电站,则不要寻找讨论具有多对多关系的子表单的教程。

【讨论】:

  • 非常感谢。我已经创建了数据库本身,我将根据您的指导进行一些更改。主要问题仍然是界面。
  • 我在答案中添加了一些额外的用户界面建议
  • 感谢您的解释,您的假设是正确的。也许是时候让我终于开始使用子表单了!我也开始研究 CreateControl 方法,但似乎世界上每个人都反对它。该数据库将替换当前用于执行完全相同操作的 Excel 文件,我打算使其与 Excel 文件一样易于使用。
  • 实际上会容易很多。变电站下拉菜单将自动过滤子表单,以显示与所选变电站相关联的每个馈线的一行,其中包含馈线表中的任何字段。如果主窗体绑定到 substation 表并且下拉菜单实际上用于从 substations 表中选择记录,则不需要额外的 VBA 代码。在主/子窗体组合中,主窗体仅限于显示单个记录,这正是您在所描述的情况下所需要的。
【解决方案2】:

您不应创建 50 个表单。

在编程中,编写 50 个相同的对象而不是使用一个对象 50 次几乎不是一个好主意。

也许您发现使用相同的表单 50 次会出现问题?如果是这样,您应该告诉我们您的想法,以便我们帮助您纠正错误。

【讨论】:

  • 谢谢,我在我的问题中添加了更多信息。
猜你喜欢
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 2021-10-02
  • 2013-12-14
相关资源
最近更新 更多