access如何解决组合框无法满足大量数据的选择问题?
发表于:2007-05-25来源:作者:点击数:
标签:
如何解决组合框无法满足大量数据的选择问题? 问题: Access里面有组合框,可以很快地从多行记录中选择所需要的数据。但是如果记录超过1000-2000呢?选择就非常不方便了。我该怎么办? 回答: 其实很多数据都可以分类(分层)来选择,而且我们可以预先筛选数
如何解决组合框无法满足大量数据的选择问题?
问题:
|
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
|
http://access911.net 站长收藏 | |
原文转自:http://www.ltesting.net
|