2013-03-27 101 views
3

我正在嘗試爲搜索2010進行搜索客戶表單。在Access 2010中構建搜索表格

我喜歡根據查詢搜索具有選項組。我做了一個搜索查詢尋找名字或姓氏。兩個文本框也出現在窗體上填寫查詢輸入(姓和名)

我需要選項組,以便我可以選擇結果名稱作爲預訂目的。

在過去,我使用子窗體和複選框做了一個間接的方法。 然後將兩個結果加載到子窗體和複選框(查詢)上,以便用戶只需在複選框上進行選擇。但是這一次我希望選項成爲查詢結果本身!請幫忙。

+0

使用組合框或列表框有什麼問題? – wakjah 2013-03-28 09:22:17

+0

從結果(選項組)中,我可以直接選擇任何記錄,並且當按下「下一步」按鈕時,它會將數據傳送到下一個表單,這樣做會更好嗎? 而不是有兩個「結果」對象(子窗體和複選框)。這是多餘的。 – Daytron 2013-03-28 12:28:35

+0

我的客戶搜索表單與此類似:我頂部有一個搜索文本框。我有一個連續的所有客戶的形式。在用戶在搜索框中輸入文本之後,我通過創建一個基於每個字段名稱的條件來過濾記錄集,如下所示:'姓氏像*%s *或姓氏像*%s *'並且用'%s'替換'%s'搜索框中的文字。我認爲這很漂亮。然後,用戶點擊聯繫人姓名右側的箭頭按鈕,以全新的形式在詳細視圖中選擇或查看該聯繫人。 – Bobort 2013-12-19 22:25:11

回答

10

下面是一個使用一個列表框的簡單示例:

表:客戶端

ID - 自動編號
名字 - 文本(255)
姓 - 文本(255)
電子郵件 - 文本(255)

測試數據:

ID LastName FirstName  Email 
-- ---------- -------------- ------------------ 
1 Thompson Gord   [email protected] 
2 Loblaw  Bob    [email protected] 
3 Kingsley Hank   [email protected] 
4 Thompson Hunter S.  [email protected] 
5 Squarepants Spongebob  [email protected] 
6 O'Rourke P. J.   [email protected] 
7 Aldrin  Edwin "Buzz" [email protected] 

表格佈局:這種形式

DesignView

VBA模塊:

Option Compare Database 
Option Explicit 

Private Sub Form_Load() 
Me.lstSearchResults.RowSource = "" 
End Sub 

Private Sub btnSearch_Click() 
Me.lstSearchResults.SetFocus 
Me.lstSearchResults.Value = Null 
Me.lstSearchResults.RowSource = _ 
     "SELECT ID, LastName, FirstName FROM Clients " & _ 
      "WHERE LastName LIKE ""*" & DQ(Me.txtSearchLastName.Value) & _ 
       "*"" AND FirstName LIKE ""*" & DQ(Me.txtSearchFirstName.Value) & "*""" 
End Sub 

Private Function DQ(s As Variant) As String 
' double-up double quotes for SQL 
DQ = Replace(Nz(s, ""), """", """""", 1, -1, vbBinaryCompare) 
End Function 

Private Sub btnLookupEmail_Click() 
If IsNull(Me.lstSearchResults.Value) Then 
    Me.txtEmail.Value = "" 
Else 
    Me.txtEmail.Value = DLookup("Email", "Clients", "ID=" & Me.lstSearchResults.Value) 
End If 
End Sub 

當窗體第一次打開,一切都是空的。

FirstOpened

鍵入 「湯普森」(不帶引號),然後單擊btnSearch填充列表框與客戶WHERE LastName LIKE "*thompson*"。 (如果你看一下代碼,你會看到,它也將匹配名字,如果你提供一個)。

SearchResults

選擇在列表框中的一個項目,然後單擊btnLookupEmail和電子郵件地址顯示在下面的文本框中。

EmailFound

+0

這太棒了。我沒有意識到它也可以使用listbox來完成。我不太瞭解使用SQL代碼,但我清楚地理解代碼。
但是可以使用frameset(選項grp)來代替嗎?
我的程序將隱藏在用戶按「下一步」(假設他選擇的結果值在目前的形式。所以,我會一直延續所選值到使用全鏈接地址,格式爲「形式下一個表格!窗體名稱!對象.value的」是否可以使用CurrentValue的列表框的下一個形式
Daytron 2013-03-28 12:40:07

+0

@Daytron回覆:‘?是否可以使用列表框的CurrentValue的下一個形式’ - 我不明白爲什麼不。'forms!formname!lstSearchResults.Value' should be working if formname'仍然被加載,即使它是隱藏的。列表框被設計爲保存可變數量的可能選擇,而選項組實際上是用於固定 – 2013-03-28 14:24:29

+0

謝謝,我很感謝幫助,最後一個問題,我發現一些線我不明白
從R語法替換功能:
替換(string1,查找,替換,[開始,[計數,[比較]]])

爲什麼你需要替換以及爲什麼字符串是Nz(s,「」)? – Daytron 2013-03-28 16:13:58