2014-04-08 92 views
0

我正在創建一個搜索表單,而我無法在子表單中看到搜索結果。 查詢運行正常,我已經將子窗體記錄源設置爲查詢。我不會收到任何錯誤。當我單擊搜索按鈕查詢運行時,它顯示子窗體底部的記錄選擇器中的行數,但我看不到行。使用Access VBA更改表單的記錄源

這裏是我的按鈕的OnClick事件代碼:

Private Sub cmdSearch_Click() 

Dim tableName As String 
Dim colName As String 
Dim keyword As String 
Dim strSQL As String 

tableName = Me.cmbTableNames.Value 
colName = Me.cmbColumnNames.Value 
keyword = Me.txtKeyword.Value 
strSQL = "Select * from [" & [tableName] & "] where [" & [colName] & "] like '*" & [keyword] & "*';" 
Debug.Print strSQL 
Me.searchResultsForm.Visible = True 

Forms![F_SearchForm]![searchResultsForm].Form.RecordSource = "Select * from [" & [tableName] & "] where [" & [colName] & "] like '*" & [keyword] & "*';" 
Forms![F_SearchForm]![searchResultsForm].Form.Requery 
End Sub 

有人能告訴我什麼,我做錯了。

謝謝

這是在立即窗口中顯示的內容爲Debug.Print

Select * from [dbo_Internal Contacts] where [First Name] like '*Amy*'; 

我的表看起來像這樣的表單視圖:

enter image description here

我已經添加了一些文本框到我的子表單(大約35)。現在,如果我運行查詢,我的表單看起來像這樣: enter image description here

如何使用vba將子窗體上的這些文本框鏈接到recordsource中的列?

請幫忙

+0

有沒有原因您不使用本機查詢構建器和設計模式屬性來設置表單的記錄源?在代碼中嵌入SQL是不好的做法,並且(如您所發現的)使調試更加困難。 – Tim

+0

@Tim我正在嘗試創建一個搜索表單,表名和列名是用戶選擇的組合框中的值。我試圖使用這個查詢(strSQL)。但訪問不讓我保存查詢,它給了我錯誤的表名無效包圍。這就是我選擇這種方式的原因。 – ksagar

+0

您不能將該代碼粘貼到查詢中;只需在查詢生成器的設計模式下從頭開始,然後選擇所需的表,並根據需要在字段之間創建連接。 – Tim

回答

0

我想通了。這就是我所做的

我修改了查詢

Select * into tmpSearchResults from [" & [tableName] & "] where [" & [colName] & "] like '*" & [keyword] & "*'; 

我給tmpSearchResults作爲記錄源到我的子窗體。

每次更新表名稱組合框時,都會刪除tmpSearchResults表。

它的工作原理與我想要的一樣。

相關問題