好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

access如何解决组合框无法满足大量数据的选择问题?

问题 : 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)进行赋值。

PrivateSubText0_AfterUpdate()   DoCmd.OpenForm"selectform"   '这行代码就实现了BTYPE表的模糊检索,使用的是WHERE子句中的LIKE关键字进行通配   Forms("selectform").List0.RowSource="SELECTbtype.soncount,btype.UserCode,btype.FullName,btype.typeIdFROMbtypeWHEREbtype.fullnamelike'*"&Text0.Value&"*'" EndSub

4、在testForm中的命令按钮的[单击]事件中写入以下代码以打开品名 选择 窗体,按分类检索

5、然后再在testForm中输入以下代码以完成多次打开窗体本身并显示子类中 数据 的功能。

为了能够使代码重复利用,写了两个通用过程

OptionCompareDatabase Dimf PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)   '先设定窗体的[键预览]属性为[是]   '本过程将加快你的输入速度   '如果按ESCAPE键,就关闭窗体   IfKeyCode=vbKeyEscapeThen     closeAllSelectForm"SelectForm"   EndIf EndSub PrivateSubList0_DblClick(CancelAsInteger)   checkYouSelect EndSub PrivateSubList0_KeyPress(KeyAsciiAsInteger)   '本过程实现全键盘操作   IfKeyAscii=13Then     checkYouSelect   EndIf EndSub SubcloseAllSelectForm(strFormNameAsString)   '通用过程1   '本过程用来关闭所有的指定名称的窗体   ForEachobjFormInForms     IfobjForm.Name=strFormNameThen       DoCmd.CloseacForm,objForm.Name     EndIf   NextobjForm EndSub SubcheckYouSelect()   '通用过程2   '检测你的 选择   '如果发现suncount列为0(表示没有下一层了)   '就可以把你选定的产品名称放到文本框中了   OnErrorResumeNext   Setf=NewForm_SelectForm   DimobjFormAsForm   IfList0.Column(0)=0Then     Forms("testform").Text0.Value=List0.Column(2)     closeAllSelectForm"SelectForm"   Else     f.Visible=True     f.List0.RowSource="SELECTbtype.soncount,btype.UserCode,btype.FullName,btype.typeIdFROMbtypeWHEREparid='"&List0.Value&"'"   EndIf EndSub

查看更多关于access如何解决组合框无法满足大量数据的选择问题?的详细内容...

  阅读:46次