运行时错误3464 crietria表达不匹配

时间:2017-02-15 10:39:57

标签: vba access-vba runtime-error

我正在尝试验证从级联组合框(名为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访问中创建登录访问时非常相似。当有人输入用户名和密码时,它会在表格中检查用户名和密码是否正确,然后允许使用表格等。

我不是要检查值是空还是空或不正确。我正在尝试验证所选值是否在Where10列中的表SLA中,如果这样执行Me.txtRTF = DateAdd("h", 2, [Date Fault Lodged]),或者检查表SLA中的下一列。

2 个答案:

答案 0 :(得分:1)

检查 Null

Private Sub txtRTF_Click()

    If Not IsNull(DLookup("Within10", "SLA", "Within10 = '" & Me.cboSite.Value & "'")) Then
        Me.txtRTF = "Something"
    End If

End Sub

你的:

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

根本没有意义,所以请仔细阅读语法;不要猜测你想要做什么。

答案 1 :(得分:0)

无论您希望在txtRTF中显示什么,当前type mismatch错误都在IF语句中:您正在检查Variant/String,这不是布尔值。你想要的是检查查找结果是否为空:

If DLookup("[Within10]", "SLA", "[Within10] = '" & Me.cboSite.Value & "'") <> Empty Then
    Me.txtRTF.Value = "..."
End If