Function 在VBA中使用用户创建的函数在access查询中输出条件
简言之:我有一个用户创建的函数(gettargetTemp(targetTemp_input))和一个输入,在函数求值时,我希望能够在Access查询(设计视图)条件字段中调用该函数,并让它表示在运行查询时要求值的条件字符串 i、 e.targetTemp_输入=1450-该值是从表格中分配的(并且可以变化) 访问查询 字段:焊盘温度Function 在VBA中使用用户创建的函数在access查询中输出条件,function,vba,ms-access,criteria,Function,Vba,Ms Access,Criteria,简言之:我有一个用户创建的函数(gettargetTemp(targetTemp_input))和一个输入,在函数求值时,我希望能够在Access查询(设计视图)条件字段中调用该函数,并让它表示在运行查询时要求值的条件字符串 i、 e.targetTemp_输入=1450-该值是从表格中分配的(并且可以变化) 访问查询 字段:焊盘温度 标准:gettargetTemp(“targetTemp_输入”) 标准可能性: -在目标MP_输入值的100度范围内记录 通常在访问查询设计中为:介于1350和
标准:gettargetTemp(“targetTemp_输入”) 标准可能性:
-在目标MP_输入值的100度范围内记录
通常在访问查询设计中为:介于1350和1550之间或为空
-所有的记录 对我来说有意义的代码是:
Public Function gettargetTemp(targetTemp_input)
If Forms![Parameter Confirmation].tempCheck = True Then
gettargetTemp = "Between " & (targetTemp_input - 100) & " AND " _
& (targetTemp_input + 100)
Else
End If
End Function
这样做的结果通常会导致访问中出现数据不匹配错误。有没有办法完成我想做的事情?或者可能做得更好?我不是程序员,但我有很好的技术背景。目前,您正试图让VBA函数形成一个表达式来执行所需的测试,而不是执行测试自身。您需要更改:
Function IsTempOK(Temp) As Boolean
Dim ParamForm As Access.Form, TargetTemp As Long
Set ParamForm = Forms![Parameter Confirmation]
If ParamForm.tempCheck Then
If IsNull(Temp) Then
IsTempOK = True ' or False, if that's what you want
Else
TargetTemp = ParamForm.TargetTemp ' or wherever this is defined
IsTempOK = (Temp >= TargetTemp - 100) And (Temp <= TargetTemp + 100)
End If
Else
IsTempOK = True
End If
End Function
函数IsTempOK(Temp)为布尔值
Dim ParamForm作为访问。Form,TargetTemp作为长
Set ParamForm=Forms![参数确认]
如果选择ParamForm.tempCheck,则
如果为空(临时),则
IsTempOK=True'或False,如果这是您想要的
其他的
TargetTemp=ParamForm.TargetTemp'或任何定义的位置
IsTempOK=(Temp>=TargetTemp-100)和(Temp非常感谢Chris的输入;我今天会尽快把这个输入。