您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> ACCESS >> 辅导 >> 正文    
  access如何解决组合框无法满足大量数据的选择问题? 【注册男护士专用博客】          

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

www.nanhushi.com     佚名   不详 

问题:

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

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。