程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> Access數據庫入門 >> access 如何解決組合框無法滿足大量數據的選擇問題?

access 如何解決組合框無法滿足大量數據的選擇問題?

編輯:Access數據庫入門

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

問題:

Access裡面有組合框,可以很快地從多行記錄中選擇所需要的數據。但是如果記錄超過1000-2000呢?選擇就非常不方便了。我該怎麼辦?

回答:

其實很多數據都可以分類(分層)來選擇,而且我們可以預先篩選數據。
以下這個示例就是用重復打開同一個窗體類來完成多層次數據的選擇。
當然,還包括預先篩選數據功能。

在閱讀本文前請先參考:
《新手來看:如何設計表結構便於treeview顯示?》
http://access911.net/index.asp?board=4&recordid=75FABE1E12DC一文,以了解如何定義數據表結構可以方便的分類並顯示。

並閱讀:
《如何將一個窗體重復打開2遍,並且每一遍打開的窗體顯示不同的數據?》
http://access911.net/index.asp?board=4&recordid=72FAB11E15DC一文,以了解 ACCESS 中一個 FORM 其實就是一個類

好了,現在開始:
1、建立一個窗體(testForm),裡面有一個文本框(text0),一個按鈕(Command2)。
2、建立一個窗體(selectForm),裡面有一個列表框(list0)。
3、在testForm中的文本框的“更新後”事件中寫入以下代碼以打開品名選擇窗體(selectForm),並對其中的列表框(list0)的行來源(RowSource)進行賦值。
Private Sub Text0_AfterUpdate()
    DoCmd.OpenForm "selectform"
    '這行代碼就實現了BTYPE表的模糊檢索,使用的是 WHERE 子句中的 LIKE 關鍵字進行通配
    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中輸入以下代碼以完成多次打開窗體本身並顯示子類中數據的功能。
為了能夠使代碼重復利用,寫了兩個通用過程

  Option Compare Database
Dim f
private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    '先設定窗體的“鍵預覽”屬性為“是”
    '本過程將加快你的輸入速度
    '如果按 ESCAPE 鍵,就關閉窗體
    If KeyCode = vbKeyEscape Then
        closeAllSelectForm "SelectForm"
    End If
End Sub

private Sub List0_DblClick(Cancel As Integer)
    checkYouSelect
End Sub

private Sub List0_KeyPress(KeyAscii As Integer)
    '本過程實現全鍵盤操作
    If KeyAscii = 13 Then
        checkYouSelect
    End If
End Sub

sub closeAllSelectForm(strFormName As String)
    '通用過程1
    '本過程用來關閉所有的指定名稱的窗體
    For Each objForm In Forms
        If objForm.Name = strFormName Then
            DoCmd.Close acForm, objForm.Name
        End If
    Next objForm
End Sub

sub checkYouSelect()
    '通用過程2
    '檢測你的選擇
    '如果發現 suncount 列為 0(表示沒有下一層了)
    '就可以把你選定的產品名稱放到文本框中了
    On Error Resume Next
    Set f = New Form_SelectForm
    Dim objForm As Form
    If List0.Column(0) = 0 Then
        Forms("testform").Text0.Value = List0.Column(2)
        closeAllSelectForm "SelectForm"
    Else
        f.Visible = True
        f.List0.RowSource = "SELECT btype.soncount, btype.UserCode, btype.FullName, btype.typeId FROM btype WHERE parid='" & List0.Value & "'"
    End If
End Sub

詳細示例程序請參考:

http://www.access911.net/index.asp?board=8&recordid=77FAB71E

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved