Ms access 运行时错误3464 Criteria表达式不匹配

Ms access 运行时错误3464 Criteria表达式不匹配,ms-access,vba,runtime-error,Ms Access,Vba,Runtime Error,我试图验证从级联组合框(名为cboSite)中选择的站点是否与名为SLA的表中“10以内”列中的任何站点名称匹配。如果是这样,我想让它来计算一个函数,我已经拿出了代码。表达式的第一位将被执行,但是如果我选择的站点不在SLA的“10以内”列中,则不会执行我的elseif语句 Private Sub txtRTF_Click() If Not ISNull (DLookup("Within10", "SLA", "Within10 = '" & Me.cboSite.Value &

我试图验证从级联组合框(名为cboSite)中选择的站点是否与名为SLA的表中“10以内”列中的任何站点名称匹配。如果是这样,我想让它来计算一个函数,我已经拿出了代码。表达式的第一位将被执行,但是如果我选择的站点不在SLA的“10以内”列中,则不会执行我的elseif语句

Private Sub txtRTF_Click()
If Not ISNull (DLookup("Within10", "SLA", "Within10 = '" & Me.cboSite.Value & " '")) Then
Me.txtRTF = DateAdd("h", 2, [Date Fault Lodged])
ElseIf Not ISNull (DLookup("10_50", "SLA", "10_50 = '" & Me.cboSite.Value & " ' ")) Then
Me.txtRTF = DateAdd("h", 4, [Date Fault Lodged])
ElseIf Not ISNull (DLookup("50_80", "SLA", "50_80 = '" & Me.cboSite.Value & " ' ")) Then
Me.txtRTF = DateAdd("h", 8, [Date Fault Lodged])
ElseIf Not ISNull (DLookup("80_100", "SLA", "80_100 = '" & Me.cboSite.Value & " ' ")) Then
Me.txtRTF = DateAdd("d", 2, [Date Fault Lodged])
ElseIf Not ISNull (DLookup("Over100", "SLA", "Over100 = '" & Me.cboSite.Value & " ' ")) Then
Me.txtRTF = DateAdd("d", 10, [Date Fault Lodged])
End If
End Sub
我试图实现的与在ms access中创建登录访问时非常相似。当有人输入用户名和密码时,它会在表中检查用户名和密码是否正确,然后允许使用表单等


我不想检查值是否为Null、空或不正确。我正在尝试验证所选的值是否在表SLA中的第10列中,如果是,请执行
Me.txtRTF=DateAdd(“h”,2,[日期错误已提交])
,或者检查表SLA中的下一列。

无论您希望在
txtRTF
中显示什么,当前的
类型不匹配
错误出现在
IF
语句中:您正在检查一个
变量/字符串
,它不是布尔值。您需要检查查找的结果是否为空:

If DLookup("[Within10]", "SLA", "[Within10] = '" & Me.cboSite.Value & "'") <> Empty Then
    Me.txtRTF.Value = "..."
End If
如果DLookup(“[Within10]”、“SLA”、“[Within10]=”“&Me.cboSite.Value&“”)为空,则
Me.txtRTF.Value=“…”
如果结束
检查空值:

你的:

DateDiff("hm", 0, 8, [Date Fault Lodged])

没有任何意义,所以请仔细阅读语法;你不知道你想怎么做。

你能把“”'改为“”?e、 g没有空格。语句
“Within10=”&Me.cboSite.Value&“”
将在值后添加一个空格,因为
,如果
Me.cboSite.Value
的值是
“foo”
,它将成为
“foo”
。我认为您应该删除此处的空格(
“”
),另外,您的
日期差异(“hm”,0,8,[日期错误])
对我来说似乎不是有效的语法。我对
access vba
了解不多,只使用了
excel vba
,所以我在这里可能错了,但我认为您不能使用
“hm”
作为间隔,而且
[日期错误提交]
似乎不是一个有效的参数。是的,感谢您指出我是一个错误,应该是“n”我对m做了一些修改并将其编辑到我的帖子中,似乎我的代码有误。我试图实现的是检查Me.cboSite中的值是否在表中的10范围内。我对Access非常陌生,我试图尝试使用方程式进行实验,我将使用它来代替Me.txtRTF=DateAdd(“h”,2,[日期错误])我在访问方面是一个相当新的人,我试着用diff2date(“hn”,0,8,[提交日期错误])进行实验。我刚刚用datediff语句更改了diff2date。在本例中,8加上8小时,它等于天,所以将8改为(0.334)我之所以使用0,是因为如果没有0,我会得到超过100万小时的结果,但是在我可以更正if语句Me.txtRTF=DateAdd(“h”,2,[日期错误已提交])之后,我将使用它VBA中没有Diff2Dates函数。是的,没有。我收到了一个使用Diff2Dates的模块代码,但是出于当前方程的目的,我将使用dateadd
DateDiff("hm", 0, 8, [Date Fault Lodged])