0

首先,一些背景:我习惯于使用 Excel,并且一直在使用它为我的世界建设爱好创建生产计算器。由于最近一些需要计算的数据量过多的问题,我终于屈服并尝试将其全部切换到 Access 中。

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

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

2)我有一个具有特定生产水平(1、2...)的地区(潮湿、干旱...)的降水表

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

问题:我怎样才能让表 3 中的生产力水平是自动的?

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

注意 2:有人告诉我只将表 3 创建为表单,但我认为这与我想做的事情不符。以防万一它可能是相关的(我没有看到明显的),接下来我将描述我构建这个数据库的第一个目标。

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

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

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

4

1 回答 1

1

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

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

.

'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 编辑器的新表单选项卡中
  • 未经测试的代码,所以可能会有一些错误
于 2016-11-14T02:47:04.493 回答