Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 在VBA中使用用户创建的函数在access查询中输出条件_Function_Vba_Ms Access_Criteria - Fatal编程技术网

Function 在VBA中使用用户创建的函数在access查询中输出条件

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_input))和一个输入,在函数求值时,我希望能够在Access查询(设计视图)条件字段中调用该函数,并让它表示在运行查询时要求值的条件字符串

i、 e.targetTemp_输入=1450-该值是从表格中分配的(并且可以变化)

访问查询 字段:焊盘温度
标准: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的输入;我今天会尽快把这个输入。