我有一個搜索表單,其中包含與表,四個條件搜索框以及從搜索框中獲取輸入,搜索表和填充在窗體的空白字段上的結果。具有多條件搜索的表單 - 使用字符串和過濾器
截至目前,只要所有四個標準框不爲空,它就會工作。
我用過濾器來實現這一點,只要所有四個盒子都不是空的,這裏就是代碼。 (我的標準框如下:名爲「Keyword」的文本框和名爲HRCombo,BuildingCombo和RoomCombo的三個組合框,它們綁定的字段如下:「項目描述」「HR Holder」「Building」「房間「)我的第一行」Me.Filter = ...「被分解以便於查看。
Me.Filter = "[Item Description] Like " & Chr(34) & Me.Keyword & "*" & Chr(34) & "
AND [HR Holder] = '" & Me.HRCombo & "'" & " AND [Building] = '" & Me.BuildingCombo
& "'" & " AND [Room] = '" & Me.RoomCombo & "'"
Me.FilterOn = True
Me.Requery
我需要它能夠執行搜索,無論標準框有哪些輸入組合。有人建議使用if語句來執行以下操作: 創建四個字符串,每個標準框一個。使用4 if語句來檢查框是否爲空 - 如果爲空,則爲其字符串分配一個星號,如果它不爲空,則將用於上述Me.Filter語句的值分配給每個框的字符串。然後,使用Me.Filter並在最後連接四個字符串。
下面是我用於此的代碼,並且,由於我的知識有限,我無法使其工作。
Dim StrA as String, StrB as String, StrC as String, StrD as String
If Me.Keyword is null then
StrA = "*"
else
StrA = [Item Description] Like " & Chr(34) & Me.Keyword & "*" & Chr(34)
End If
If Me.HRCombo is null then
StrB = "*"
else
StrB = [HR Holder] = '" & Me.HRCombo & "'"
End If
If Me.BuildingCombo is null then
StrC = "*"
else
StrC = [Building] = '" & Me.BuildingCombo & "'"
End If
If Me.RoomCombo is null then
StrD = "*"
else
StrD = [Room] = '" & Me.RoomCombo & "'"
End If
Me.Filter = "StrA & " AND "StrB & " AND "StrC &" AND "StrD"
Me.FilterOn = True
Me.Requery
就像我說的,我的知識有限,所以我確信可能缺少引號和逗號,或者其中有太多。有任何想法嗎?
太棒了!謝謝你的幫助! – user3229229
另一個問題......在第一個strWhere語句的末尾有一個星號......我最初用它來告訴在字段中查找具有用戶鍵入關鍵字的任何內容,但它只顯示關鍵字是該領域的第一個詞。它之前也是這樣做的。所以我的問題是如何在開始時添加一個星號,以便訪問將查找任何包含關鍵字的字段。基本上,如果它處於查詢模式,它將...像*關鍵字&*我無法弄清楚如何以正確的方式得到它......抨擊引號和雙引號:) – user3229229
我已添加星號開頭,所以你可以看到它的外觀。 – HK1