如何通过从表中获取数据来自动填充基于tableA-field的tableA-fieldA?

How to autofill tableA-fieldA based on tableA-fieldB by getting the data from tableB?

首先,一些背景:我习惯于使用 Excel,并且我一直在使用它来为我的世界建设爱好创建生产计算器。由于最近出现了一些需要计算的数据量过大的问题,我终于妥协了,尝试全部转成Access。

我一直在阅读一些关于如何使用 Access 的资料,并基于此我做出以下决定:

1) 我有特定生产水平 (1,2...) 的地区(北方、温带...)的温度 table

2) 对于具有特定生产水平 (1、2...)

的地区(潮湿、干旱...),我有降水 table

3) 然后我有一个生物群落 table,我在其中混合上述区域以创建具有以下字段的生物群落:
- 生物群系。
- 降水(来自 table 2 的下拉菜单)。
- 温度(来自 table 1 的下拉菜单)。
- 生产力水平(应该是 Table 的降水生产水平乘以 Table 1 的温度生产水平)。

问题:如何让 table 3 中的生产力水平自动进行?

注意 1:我不知道 VBA,这是我第一次使用 Access。

注意 2:有人告诉我只需创建 table 3 作为一种形式,但我认为这对我想做的事情不起作用。以防万一它可能相关(而且我没有看到明显的),接下来我将描述我建立这个数据库的第一个目标。

DATA ENTRY FORM:下面引用的所有 tables 都是通过纬度-经度的串联连接起来的。我只成功地构建了它的一部分(主窗体和城市子窗体)。
- 基于 table 的主要表格,包含 3 个字段:纬度、经度、地形。
- 基于 table 的子表单,包含 3 个字段:城市名称、成立日期、倒塌日期。
- 基于 3 tables 的 3 个子表单,每个子表单代表一个时间段,具有 2 个字段:生物群落(给定区域的生物群落变化取决于时间段)及其生产力水平。

在逐个坐标地构建世界之后,我将进入下一阶段 - 创建 tables,在此我识别植物和动物,以及从它们衍生的产品及其生产力水平。这将用于创建我的世界经济系统和不同财富等级的角色列表。

我可以在 Excel(不使用 VBA)中稍微轻松地完成这项工作,但是数据量会在我使用它之前杀死该文件。我只希望我能设法在 Access 中完成它 - 但我会一步一步地处理这个怪物。现在,我只关注上面发布的问题。感谢您能给我的任何帮助。

您需要一个数据库触发器,这意味着将数据输入 biome table 中的指定列 "triggers" 第三个 table 的计算。 Access 不支持触​​发器,但有一个解决方法。您使用表单并为触发属性的文本框创建事件。

  • 根据您的 biome table 创建一个新表单。我建议你先让触发器工作。稍后您可以将它与所有子表单一起添加到您的表单中。由于您是 Access 的新手,您不想这么快就处理子表单,因为它们使一切变得比需要的更复杂。
  • 您将文本框 Precipitation、Temperature、ProductivityLevel 重命名为 txtPrecipitation txtTemperature txtProdLevel
  • 您打开 VBA-Editor 并在您的新表单中尝试以下代码:

.

'Trigger Events
private sub txtTemperature_Change()
call CalculateProductivityLevel()
end sub
private sub txtPrecipitation_Change()
call CalculateProductivityLevel()
end sub
private sub txtTemperature_AfterUpdate()
call CalculateProductivityLevel()
end sub
private sub txtPrecipitation_AfterUpdate()
call CalculateProductivityLevel()
end sub

'Calculation Procedure
private sub CalculateProductivityLevel()
  'Check if both attributes have values. If not do not calculate anything
  if (Len(me.txtTemperature & "") = 0) OR (Len(me.txtPreciperation & "") = 0) Then 
    exit sub
  else
    me.txtProdLevel = me.txtTemperature * me.txtTemperature
end sub

备注

  • 当两个属性中有新条目或保存新条目时,触发事件将调用计算过程。
  • 确保将代码放入 VBA-editor
  • 的新表单选项卡中
  • 未经测试的代码,因此可能存在一些错误