2017-02-15 43 views
0

我試圖驗證從級聯組合框(名爲cboSite)中選擇的站點是否與名爲SLA的表中的「10內」列中的各種站點名稱匹配。如果是這樣,我想要它來計算一個函數,我已經拿出了代碼。表達式的第一位被執行,但是如果我選擇一個不在SLA中的10列以內的站點,那麼我的elseif語句不會被執行。運行時錯誤3464在crietria表達式中不匹配

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訪問中創建登錄訪問時非常相似。當有人輸入用戶名和密碼它會檢查表中,看看用戶名和密碼是否正確,然後允許使用表格等。

我不想檢查值是空還是空或不正確。我試圖驗證所選的值是否在列10內的表SLA中,如果這樣執行Me.txtRTF = DateAdd("h", 2, [Date Fault Lodged])或者檢查表SLA中的下一列。

+1

你能把「'」改成「'」嗎?例如沒有空間。 – Vityata

+0

由於'''''',如果'Me.cboSite.Value'的值是''''''''''''''''在'10'=&'&Me.cboSite.Value& 「foo」,它會變成「foo」。我想你應該刪除這裏的空格(''''') –

+0

另外,你的'DateDiff(「hm」,0,8,[Date Fault Lodged])對我來說似乎不是一個有效的語法。我對'access-vba'不太瞭解,只用'excel-vba',所以我可能在這裏錯了,但我認爲你不能使用''hm''作爲間隔,加上'[Date Fault Lodged]似乎不是一個有效的論點。 –

回答

0

無論你想在txtRTF顯示什麼,目前type mismatch誤差在IF聲明:您所檢查Variant/String,這不是一個布爾值。你想要的是檢查,如果查詢的結果是空的:

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

似乎我有我的代碼錯誤 我想要實現的是檢查是否Me.cboSite中的值在表格 –

1

檢查

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]) 

沒有任何意義所有,所以閱讀語法;這並不是要猜測你想要做什麼。

+0

中的10列之內我對Access非常新,我試圖用方程 進行實驗我將用這個代替 Me.txtRTF = DateAdd(「h」,2,[ Date Fault Lodged]) –

+0

我對Access很新,我試圖用方程 Diff2dates(「hn」,0,8,[Date Fault Lodged])我剛剛用datediff語句改變了diff2dates,在這個8中情況是增加8小時,而不是它相當於天,所以改變了8爲(0.334)我把0放入的原因是因爲沒有z ero我得到了超過一百萬小時的結果 但是我會用這個來代替我可以糾正我的if語句 Me.txtRTF = DateAdd(「h」,2,[Date Fault Lodged]) –

+0

沒有_Diff2Dates_功能在VBA中。 – Gustav

相關問題