access解决组合框无法满足大量数据的问题(转)

access解决组合框无法满足大量数据的问题(转)[@more@]

  问题:

  

   Access里面有组合框,可以很快地从多行记录中选择所需要的数据。但是如果记录超过1000-2000呢?选择就非常不方便了。我该怎么办?

  

  回答:

  

  其实很多数据都可以分类(分层)来选择,而且我们可以预先筛选数据。

  以下这个示例就是用重复打开同一个窗体类来完成多层次数据的选择。

  当然,还包括预先筛选数据功能。

  

  好了,现在开始:

  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

  


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8403220/viewspace-941189/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8403220/viewspace-941189/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值