如何解決組合框無法滿足大量數(shù)據(jù)的選擇問題?

字號:

問題:
    access里面有組合框,可以很快地從多行記錄中選擇所需要的數(shù)據(jù)。但是如果記錄超過1000-2000呢?選擇就非常不方便了。我該怎么辦?
    回答:
    其實很多數(shù)據(jù)都可以分類(分層)來選擇,而且我們可以預(yù)先篩選數(shù)據(jù)。
    以下這個示例就是用重復(fù)打開同一個窗體類來完成多層次數(shù)據(jù)的選擇。
    當(dāng)然,還包括預(yù)先篩選數(shù)據(jù)功能。
    在閱讀本文前請先參考:
    《新手來看:如何設(shè)計表結(jié)構(gòu)便于treeview顯示?》
    http://access911.net/index.asp?board=4&recordid=75FABE1E12DC
    一文,以了解如何定義數(shù)據(jù)表結(jié)構(gòu)可以方便的分類并顯示。
    并閱讀:
    《如何將一個窗體重復(fù)打開2遍,并且每一遍打開的窗體顯示不同的數(shù)據(jù)?》
    http://access911.net/index.asp?board=4&recordid=72FAB11E15DC
    一文,以了解 access 中一個 FORM 其實就是一個類
    好了,現(xiàn)在開始:
    1、建立一個窗體(testForm),里面有一個文本框(text0),一個按鈕(Command2)。
    2、建立一個窗體(selectForm),里面有一個列表框(list0)。
    3、在testForm中的文本框的“更新后”事件中寫入以下代碼以打開品名選擇窗體(selectForm),并對其中的列表框(list0)的行來源(RowSource)進(jìn)行賦值。
    Private Sub Text0_AfterUpdate()
    DoCmd.OpenForm "selectform"
    '這行代碼就實現(xiàn)了BTYPE表的模糊檢索,使用的是 WHERE 子句中的 LIKE 關(guān)鍵字進(jìn)行通配
    Forms("selectform").List0.RowSource = "SELECT btype.soncount, btype.UserCode, btype.FullName, btype.typeId FROM btype WHERE btype.fullname like '*" & Text0.Value & "*' "
    End Sub
    4、在testForm中的命令按鈕的“單擊”事件中寫入以下代碼以打開品名選擇窗體,按分類檢索
    5、然后再在testForm中輸入以下代碼以完成多次打開窗體本身并顯示子類中數(shù)據(jù)的功能。
    為了能夠使代碼重復(fù)利用,寫了兩個通用過程
    Option Compare Database
    Dim f
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    '先設(shè)定窗體的“鍵預(yù)覽”屬性為“是”
    '本過程將加快你的輸入速度
    '如果按 ESCAPE 鍵,就關(guān)閉窗體
    If KeyCode = vbKeyEscape Then
    closeAllSelectForm "SelectForm"
    End If
    End Sub