首先,一些背景信息:我习惯使用Excel,我一直用它为我的世界建筑爱好创建生产计算器。由于最近一些需要计算的数据量过大的问题,我终于放弃并尝试将其全部转换为Access。
我一直在做一些关于如何使用Access的阅读,并在此基础上决定了以下内容:
1)我有一个温度表,适用于具有特定生产水平(1,2 ...)的区域(北方,温带......)
2)我有一个特定生产水平(湿地,干旱......)的降水表(1,2 ...)
3)然后我有一个生物群落表,我将上述区域混合在一起,用以下字段创建我的生物群落:
- 生物群落
- 降水(表2中的下拉菜单)
- 温度(表1中的下拉菜单)
- 生产力水平(应该是表2中的降水生产水平乘以表1中的温度生产水平)。
问题:如何让表3中的生产力水平自动生成?
注意1:我不了解VBA,这是我第一次使用Access。
注意2:我被告知只是创建表3作为表格,但我认为这不符合我想做的事情。万一它可能是相关的(我没有看到明显的),我接下来将描述我建立这个数据库的第一个目标。
数据输入表格:下面引用的所有表格都是通过纬度 - 经度的连接来连接的。我已经成功地部分构建了它(主窗体和城市子窗体) - 基于表格的主表格,包含3个字段:纬度,经度,地形 - 基于具有3个字段的表格的子表单:城市名称,基础日期,折叠日期 - 基于3个表格的3个子表格,每个表格代表一个时间段,有2个字段:生物群系(生物群系在给定区域内根据时间段而变化)及其生产力水平。
在建立世界之后,通过坐标协调,我将进入下一阶段 - 创建表格,我可以识别植物和动物,以及从中获取的产品及其生产力水平。然后,这将用于创建我的世界经济系统和不同财富水平的人物清单。
我可以在Excel中轻松地完成这项工作(不使用VBA),但是在我可以使用之前,数据量会终止该文件。我只希望我能设法在Access中取消它 - 但我会一步一步地处理这个怪物。现在,我只关注上面发布的问题。感谢您提供给我的任何帮助。
答案 0 :(得分:1)
您想要一个数据库触发器,这意味着将数据输入到指定列中的biome
表中会“触发”第三个表的计算。 Access不支持触发器,但有一种解决方法。您可以使用表单并为触发属性的文本框创建事件。
biome
表格创建新表单。我建议你先让触发器工作。稍后您可以将其添加到包含所有子表单的表单中。由于您是Access的新手,因此您不希望如此快地处理子表单,因为它们会使一切变得更加复杂。txtPrecipitation
txtTemperature
txtProdLevel
'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
请注意