我有一个名为 tblRawMaterials 的表,其中包含两个重要字段: PartNumber 和 Diameter 。
我正在使用表单填写包含各种信息的不同表格。重要信息是: PartNumber 和 TensileStrength
在表单中,我允许用户从包含行源 tblRawMaterials 的组合框中选择 PartNumber 。然后他们必须将拉伸强度输入标准文本框。
我需要验证规则的效果,它会根据组合框中选择的部件号的直径更改 TensileStrength 的可接受范围(在表单中)。
例如:用户选择 PartNumber 000001,直径为2"并且可接受的拉伸强度> 150。用户选择 PartNumber 000002,直径为6"并且可接受的拉伸强度> 130
我无法使用级联组合框,因为用户需要在 TensileStrength 框中输入十进制数据。我已尝试在表达式构建器中使用DLookUp()并创建宏,但我一直陷入困境。谢谢你的帮助。
答案 0 :(得分:0)
尝试在组合框中添加另一列直径。 请务必相应地更新列数和列宽。 ( 1 用于列数, 1; 0 用于宽度)
确保TS文本框的格式为常规编号,以便Access可以处理非数字问题。
我不会在TS文本框的 AfterUpdate ,更改等事件验证上浪费我的时间,因为他们在保存时不会输入任何内容记录。
在代码尝试将数据保存到不同的表之前进行验证。我建议创建一个返回布尔值的验证函数。您可以在那时检查TS null值。您也可以参考组合框中的新列。
Function SaveTheRecord() As Long
If DataIsValid = False Then Exit Function
'Your current code to save record to the other table
End Function
Function DataIsValid() As Boolean
DataIsValid = False 'default to false so you can just jump out of the function if criteria is not met
If IsNull(txtTS) Then
MsgBox "Please Enter a valid Tensile Strength", vbExclamation, "Validation Error"
Exit Function
End If
'txtTS not null at this point
'1st senerio
If myCombo.Column(1) < 2 Then 'diameter < 2" (this is the new column for diameter)
If txtTS < 150 Then
MsgBox "Please enter a Tensile Strength that is >= 150", vbExclamation, "Validation Error"
Exit Function
End If
End If
'Check any other scenerios
DataIsValid = True 'if we've reached this point, then everyting must be ok
End Function
您可能希望在TS文本框旁边创建一个标签,以告知用户范围限制,以便他们在尝试保存之前知道。你可以在组合框的AfterUpdate事件上做到这一点。这只是一个给你这个想法的一般例子。
Private Sub myCombo_AfterUpdate()
Call ShowPartRange
End Sub
function ShowPartRange() as long
'if logics based on myCombo.Column(1)
lblRange.caption = "Must be > 150"
'etc
End Function