2013-07-23 40 views
0

我想創建一個搜索表單,可以根據用戶從組合框中選擇的表格一次搜索一個表格。我有一個名爲searchCriteria的文本框,組合框稱爲TableList。這個想法是,如果用戶想搜索customer_table,她會在組合框中選擇「customer_table」,在文本框中輸入她的搜索條件,然後按搜索按鈕。如果她想搜索order_table,她會從組合框中選擇該表格等等。我希望查詢返回所有與輸入條件有關的完整記錄。因此,舉例來說,如果用戶從客戶表中檢索「詹姆斯」,我想的完全記錄(所有字段)回來,在那裏的標準「詹姆斯」的存在:整個表格搜索表單 - 微軟Access 2010

 
    Company    | First Name | Last Name | Account # | Sales Rep 
    Jammy Juice   | James   | Dan   | 555   | Jim Halbert 
    Jameson Car Shop  | Tom   | Cramb  | 556   | Dwight Smiles 
    Landon Refrigeration | Bob   | McVance  | 557   | James Bland 

從我的理解,這將需要一些VBA來寫一個查詢...

我假設查詢將是類似於以下內容: SELECT t。* FROM customer_table t WHERE(t。*):: text LIKE'%James%';

輸入的字符串(James)和表名(customer_table)由用戶輸入。

簡單地說,我無法將表單數據(表格名稱和搜索文本)放入我的查詢中。

有誰知道如何在Microsoft Access 2010中執行此操作?任何洞察力將不勝感激。

回答

-2

要引用在組合框中選定的文本

Me.TableList.Column(0) 

要在文本框中指文本

Me.searchCriteria.Text 

所以,你的VBA命令看起來像

DoCmd.RunSQL("SELECT t.* FROM " & Me.TableList.Column(0) & " t WHERE (t.*)::text LIKE '%" & Me.searchCriteria.Text & "%'") 
+0

Access中的通配符是'*',而不是'%'。我們不能引用'Text'屬性,只是刪除'.Text'。但是'(t。*):: text'在Access中不起作用 - 我不知道它來自哪裏,但它不是Access。 –

+0

我已經提供了代碼來引用查詢中的表單數據,假設查詢在Access中獨立工作。 –

3

任何序列 Access中的通配符是*不是。如果你想搜索的訪問所有字段,那麼你可以串接所有領域:

WHERE [FirstName] & [Surname] & [City] & [Address] 
LIKE "'*" & Forms!frmSearch!txtFind & "*'" 

你可能有一個顯着的特徵分隔字段,以防止發現字段之間重疊的話。

或者單獨,但效率較低:

WHERE [FirstName] Like "'*" & Forms!frmSearch!txtFind & "*'" 
OR [Surname] Like "'*" & Forms!frmSearch!txtFind & "*'" 
OR [Address] Like "'*" & Forms!frmSearch!txtFind & "*'" 

(我不知道在哪裏(t.*)::text是從哪裏來的,但它不是訪問。)

所以,你首先需要發現所有的他們選擇的表的字段名稱。您可以獲取他們所選表名的TableDef,並循環訪問其Fields集合以獲取字段名稱。還有其他方法可以做到這一點。例如,GetSchema

+1

雖然我會暫停考慮你的方法。這將是非常低效的,並且可能不可靠,因爲您正在搜索所有數據類型,但將它們全部視爲文本。另一種方法是同步組合框:讓他們選擇表名,然後用它的字段名填充第二個組合框 - 但只是那些數據類型的文本。 –

+0

評論1:這是一個特別好的答案,因爲OP'無法將表格數據(表格名稱和搜索文本)放入我的查詢中「,並且在此處演示了必要的方法。 – Smandoli

+0

評論2:我認爲OP可能對最後關於'TableDef'的位感興趣。在這種情況下,這對我來說非常有效,'Field'屬性甚至可以讓你通過數據類型(文本和數字等)來選擇字段。推薦OP運行搜索,儘可能多的教程可用。 – Smandoli

0

這是在Access 2010中這樣做的LAZY方式:

  1. 創建一個連續的形式
  2. 在窗體屬性,設置Navigation Buttons =是
  3. 當您打開窗體,你會看到一個Search框:

Search box in Navigation Bar

  1. 鍵入您要搜索的內容。點擊Enter查看更多匹配項。

注:

  • 此搜索
  • 這不限制記錄的搜索項
  • 表格上顯示的所有領域這可能不是一個好主意非常大的記錄
  • 可能需要爲此功能進行一些用戶培訓