2012-09-07 41 views
0

感謝在其他問題和一些好的教程中收到的幫助,我可以創建我的訪問數據庫以將圖書保存在我的圖書館中,並且現在我有一個很好的窗體(有幾個子窗體)將新書輸入到我的數據庫中。 (這全部基於訪問2003)。

下一步是能夠查詢數據庫並搜索書籍。

我正在考慮採取以下方法,但我不確定這是否可行和/或如果努力會令人望而卻步。事實上,我已經有我自己的擔憂和/或問號。

請您分享您對我的方法的看法,並最終解決我的一些擔憂? (鏈接到解決我的任何問題的其他問題或資源非常好!)
在此先感謝您的任何貢獻!

點1。使用按鈕創建一個控件表單,以執行不同類型的查詢(按作者,標題等);我還想爲整個數據庫提供「自由文本搜索」選項。該表單還將包括輸入搜索條件的字段,例如作者爲搜索作者等等。這些字段應該是自動完成的組合框,以便於搜索用戶。
點2。要執行的不同查詢應該在相應按鈕的點擊事件的vba代碼中被「硬編碼」;這是因爲我發現手動編寫SQL查詢更容易,特別是當我需要從其他字段傳遞參數時;另外,當我可以將它們「存儲」在我的代碼中時,我沒有看到需要在數據庫中分別乘以表單和存儲查詢。
點3。這些查詢的最終結果(記錄集?)應該以表格形式顯示。我將始終選擇要輸出的相同字段,而不考慮執行的查詢,因此應將單個表單用作所有不同查詢的輸出。我想要一個表格,因此我可以一勞永逸地定製它的外觀和行爲。如果可能,表格應爲數據表類型(但這不是一個嚴格的要求)。鑑於搜索標準的差異,我相信查詢結果存儲在易失性表/記錄集中並不是問題,因爲每次請求都必須重新填充查詢結果。

關於第1點的問題。自由文本搜索真的可行嗎?我怎麼能這樣做?
關於第2點的問題。用所有輸入參數構建一個持有SQL查詢的字符串很容易,但是如何運行查詢?我在教程中的搜索困惑了我,我不知道如何做到這一點了。如上所述,我不想單獨存儲查詢,然後引用查詢集合中的特定查詢,而是執行和「SQL字符串」。這是如何完成的?如何將結果存儲在變量中? Recordset是存儲臨時表的正確變量類型嗎?
關於第3點的問題。我如何創建「輸出」表單?我應該創建字段(在設計視圖中)爲未綁定的,還是應該將它們綁定到數據庫中的表中?以及如何用變量中的數據填充表單?考慮到我的數據庫中有多個多對多關係(如作者和書籍),數據庫是否可行?如果我不得不重新做一個形式和子表單,那麼如何將子表單和主表單連接起來,因爲「表格」在設計期間不存在,而只在「運行時間」?而且我也沒有查詢,因爲如上所述,它們在VBA代碼中是不同的和硬編碼的。

P.S.有關信息,所有這些都是作爲「愛好」來完成的,並且爲了通過這樣做來學習新的東西(access和vba)......單個窗體顯示來自多個查詢的輸出

回答

0

要點1.使用按鈕創建一個控制表單,以執行查詢的不同種類 (按作者,標題等);我還想爲整個數據庫提供 「自由文本搜索」選項。該表格還將包含 包括用於輸入搜索標準的字段,例如作者 用於按作者搜索等。這些字段應該是具有 自動完成功能的組合框,以便於搜索用戶。

您當然可以使用下拉列表填充表單。有一個嚮導。您不能使用下拉菜單在任何位置進行搜索,但有一個方便的搜索按鈕,或者可以連接並使用InStr。

第2點要執行的不同查詢應該在 中「硬編碼」相應按鈕的點擊事件的vba代碼;這 是因爲我覺得更容易手動編寫SQL查詢,尤其是 當我需要從其他字段傳遞參數;再加上我 沒有看到需要將表單和存儲查詢分開放在 DB中,我可以讓它們「存儲」在我的代碼中。

你會看到,把查詢出來的代碼的時候你開始做accdes/MDES

第三點查詢的最終結果(一個記錄集?)然後應 顯示以一種形式。我將始終選擇相同的字段爲 輸出,而不管執行的查詢是什麼,因此單個表單應爲 用作所有不同查詢的輸出。我想要一個形式爲此的原因 ,以便我可以定製其外觀和行爲一次,併爲 所有。如果可能的話,表格應該是數據表的類型(但這不是嚴格要求的 )。鑑於搜索標準的差異,我認爲查詢結果存儲在易變的表/記錄集中是完全不錯的,並且它不是必須在每次請求時重新填充它們的問題。

重新填充會導致膨脹。如果可以,請始終避免MS Access中的臨時表。

+0

那麼你會怎麼做呢? – rodedo

+0

而不是什麼?臨時表?您幾乎可以始終構建合適的查詢。只有當失敗時你需要臨時表。當你需要的只是搜索時,它永遠不需要。 – Fionnuala

+0

對不起,也許我沒有考慮過我自己。我正在描述整個想法。你評論了這些觀點,但沒有回答我的疑慮/問題,所以我假定你在考慮整個想法的時候是失敗的,因此我問你應該怎麼做。 – rodedo