我是Access和VBA的新手。我当前正在使用Access 365。
我有一个表格[torque],其中的字段为 [不同的螺栓尺寸] ,每个字段均具有所需的扭矩。
当前,我正在创建一个表单,用户可以在其中从ComboBox中选择螺栓尺寸和材料,并在TextBox中生成所需的扭矩值。
因此,我使用命令创建了一个按钮
Required Torque = DLookup([material selection], "torque", [bolt size] = [bolt size selection])
使用此代码,无论我的[螺栓尺寸选择]是什么,返回的结果始终是表中的第一个螺栓尺寸。
我通过固定材料(合金钢)进行了实验
Required Torque = DLookup([alloy steel], "torque", [bolt size] = [bolt size selection])
通过固定色谱柱,根据不同的螺栓尺寸返回结果。
似乎Dlookup函数只能从形式中获取一个变量?
请告知。谢谢。
答案 0 :(得分:2)
要从中返回值的字段名称通常是静态的,并且可能有多个条件。如果字段是文本类型,请使用撇号定界符作为参数。
Required Torque = DLookup("[required torque]", "torque", "[bolt size] = '" & [bolt size selection] & "' AND [different material]='" & [material selection] & "'")
一种更好的方法是在一个列中具有[required扭矩]字段的多列组合框。然后,文本框ControlSource中的表达式可以按索引引用组合框。索引以0开头,因此如果扭矩在第3列中,索引为2:
=[comboboxname].Column(2)
。
然后,[Torque]表应该具有唯一的标识符键。该键应作为外键保存到数据表中,因此不必将所需的扭矩值保存到数据表中。
但是,如果您为每种材料的扭矩创建一列,而不是规范化的结构,则表达式为:
Required Torque = DLookup("[" & [material selection] & "], "torque", "[bolt size] = '" & [bolt size selection] & "'")
假定[材料选择]组合框列出的字段名称与表中的名称完全相同。由于您在字段名称中使用空格,因此[ ]
是必需的。