Office中国论坛/Access中国论坛

标题: 可重复多选的组合框 [打印本页]

作者: Trynew    时间: 2008-6-6 16:14
标题: 可重复多选的组合框


通过以下代码(插入组合框的更新后事件中),可以实现用组合框重复多选,也可以手工修改录入内容:
Private Sub Combo0_AfterUpdate()
Dim i As Integer, strList As String
    With Combo0
        For i = 1 To .ListCount
            strList = IIf(Nz(strList) = "", "", strList & ";") & .ItemData(i)
        Next
        If Nz(.Text) <> "" Then
            If InStr(1, .Tag, .Text) = 0 And InStr(1, strList, .Text) > 0 Then
                .Value = IIf(Nz(.Tag) = "", "", .Tag & "、") & .Text
            End If
            .Tag = .Text
        Else
            .Tag = ""
        End If
    End With
End Sub
作者: t小宝    时间: 2008-6-6 16:18
非常巧妙,学习了[:50]
作者: Trynew    时间: 2008-6-6 16:19
经测试,可以省掉其中4行:
Private Sub Combo0_AfterUpdate()
Dim i As Integer, strList As String
    With Combo0
        For i = 1 To .ListCount
            strList = IIf(Nz(strList) = "", "", strList & ";") & .ItemData(i)
        Next
        If InStr(1, .Tag, .Text) = 0 And InStr(1, strList, .Text) > 0 Then
            .Value = IIf(Nz(.Tag) = "", "", .Tag & "、") & .Text
        End If
        .Tag = .Text
    End With
End Sub
作者: rjacky    时间: 2008-6-6 17:09
好东西[:50]
作者: fswxs    时间: 2008-6-6 20:36
trynew站长,很久不见,终于又尝试新的了[:34]
作者: 5988143    时间: 2008-6-6 21:36
精品不断![:50]
作者: goto2008    时间: 2008-6-7 01:02
太有创意了,学习
作者: tmtony    时间: 2008-6-7 01:44
不服不行!!
作者: Trynew    时间: 2008-6-7 02:06
进一步,可以把此功能做成通用函数,在公共模块中建立函数:

Public Function MultComb()
Dim i As Integer, strList As String
    With Screen.ActiveControl
        For i = 1 To .ListCount
            strList = IIf(Nz(strList) = "", "", strList & ";") & .ItemData(i)
        Next
        If InStr(1, .Tag, .Text) = 0 And InStr(1, strList, .Text) > 0 Then
            .Value = IIf(Nz(.Tag) = "", "", .Tag & "、") & .Text
        End If
        .Tag = .Text
    End With
End Function

然后在窗体的组合框更新后事件中输入函数:=MultComb()
现在你的组合框就是有多选功能的“超级”组合框了。
作者: wang1950317    时间: 2008-6-7 11:11
真好啊!提一个小问题:当我们不幸又误选了已经选过的条目,其他选中的消逝了,只保留了最后选中的。能否在误点击了已选项没有反应就好了。谢谢!
作者: huangqinyong    时间: 2008-6-7 12:16
thanks
作者: zhaofangyuan    时间: 2008-6-7 13:37
标题: 回复 1# 的帖子
好贴,向您学习!
作者: Trynew    时间: 2008-6-10 09:09
标题: 回复 11# 的帖子
问:当我们不幸又误选了已经选过的条目,其他选中的消逝了,只保留了最后选中的。能否在误点击了已选项没有反应就好了
答:加上一个判断即可,见下面程序。不过这时从多选变为其中一个选项就要先清空内容才行。
Private Sub Combo0_AfterUpdate()
Dim i As Integer, strList As String
    With Combo0
MsgBox InStr(1, .Tag, .Text)
        For i = 0 To .ListCount
            strList = IIf(Nz(strList) = "", "", strList & ";") & .ItemData(i)
        Next
        If InStr(1, .Tag, .Text) = 0 And InStr(1, strList, .Text) > 0 Then
            .Value = IIf(Nz(.Tag) = "", "", .Tag & "、") & .Text
        End If
'加上判断已选及在列表内则内容不变即可
        If InStr(1, .Tag, .Text) > 0 And InStr(1, strList, .Text) > 0 Then
            .Value = IIf(Nz(.Text) = "", "", .Tag)
        End If
        .Tag = .Text
    End With
End Sub
作者: panjianhui    时间: 2008-6-10 10:53
如果利用这个组合框作为查询的参数,如何设计查询呢?
作者: wang1950317    时间: 2008-6-10 11:36
学习![:50] [:50]
作者: Trynew    时间: 2008-6-10 11:41
标题: 回复:panjianhui
多选组合框作为查询的参数:
[attach]30504[/attach]
        用: "select * from tem where instr(1,'" & Combo0 & "',[字段2])>0"
也可以用split函数拆分后用or条件来查询,速度应该快点。
范例代码如下:
Private Sub 查询_Click()
    If Nz(Combo0, "") = "" Then
        Me.Child5.Form.RecordSource = "select * from tem"
    Else
        Me.Child5.Form.RecordSource = "select * from tem where instr(1,'" & Combo0 & "',[字段2])>0"
    End If
    Me.Child5.Form.Requery
End Sub
作者: wang1950317    时间: 2008-6-10 14:26
在大师们的手里是想怎么弄就怎么弄啊,佩服!不过还有一个小疑问:当我们在组合框中选中某项或某几项按查询,显示是正常的,但清除组合框内容后再重选,它就会将上一次选取的项也显示出来了。必须清除组合框内容后按一下[查询],再选才能正确显示。
作者: Trynew    时间: 2008-6-11 08:57
标题: 回复 18# wang1950317的帖子
清除组合框内容后并未触发更新后事件,你把更新后事件(Private Sub Combo0_AfterUpdate()
)改为更改事件(Private Sub Combo0_Change())可以解决你这个问题。
虽然放在更改事件会有一点问题,如执行太频繁(自行输入内容时),但经过比较效果还是比放在更新后事件好些。
其实大家的一些提问和建议,就是我们灵感的源泉及动力,也多谢你的帖子:)
作者: wang1950317    时间: 2008-6-11 11:43
啊啊!Trynew老师太客气啦!只要不嫌我等无知太烦就好。谢谢你的耐心!谢谢!
作者: tmtony    时间: 2008-6-11 11:48
越来越精彩
作者: 去啊    时间: 2008-6-13 21:34
太强了!
作者: 13555609005    时间: 2008-7-15 09:21
学习吓
作者: gaofei186    时间: 2008-7-15 13:14
看看一下
作者: duomu    时间: 2008-7-15 20:32
很不错,收藏下
作者: rym_yy    时间: 2008-8-11 11:49
[:26]
作者: xuwenning    时间: 2008-8-11 16:13
[:50] 学习
作者: hywlthj    时间: 2008-10-6 00:50
标题: 好东东学学再学
好东东学学再学,谢谢
作者: 小小鸟    时间: 2008-11-13 13:06
谢谢分享,下载学习。
作者: sunwrsun    时间: 2008-11-23 04:58
学习,学习
作者: david9198    时间: 2008-12-22 15:20
新手学习啊
作者: ytfgymq    时间: 2008-12-25 16:31
LOOk一下
作者: jimchen    时间: 2009-1-12 10:55
看看
作者: lyf_898    时间: 2009-1-16 19:19
看看了
作者: yori2007    时间: 2009-1-17 11:25
[:31]
作者: jackysu78    时间: 2009-3-20 12:43
早点发现老师的这个作品就好了,太厉害了。
作者: jackysu78    时间: 2009-3-20 13:04
我用了一下,不得不再次说一声,佩服!
作者: 减肥    时间: 2009-4-12 15:53
学习一下
作者: youchytan    时间: 2009-5-26 18:21
服!服!
作者: Sundy1250    时间: 2009-7-3 20:07
真是不容易啊
作者: linag516    时间: 2009-7-31 13:35

作者: xieroy    时间: 2009-8-12 10:41
这个例子挺好
作者: rayli0    时间: 2009-9-30 15:23
支持
作者: chaojianan    时间: 2009-9-30 17:54
谢谢分享,支持,收藏了。
作者: yanggd    时间: 2009-10-4 16:51
真的是个好东西呀
作者: cyj759    时间: 2009-10-22 10:52
学习学习
作者: li08hua    时间: 2009-10-31 22:40
学习吧
作者: 2pl01    时间: 2009-11-10 15:07
我要看一看
作者: tony182838    时间: 2009-12-26 19:11
谢谢了,一定要下来看看
作者: lmgiant    时间: 2010-3-23 11:43
不服不行!!
作者: c101    时间: 2010-5-25 00:14
学习学习
作者: 13601812106_01    时间: 2010-6-8 22:35
不错,支持
作者: 小桥人家    时间: 2011-3-4 19:17
要学习

作者: dsz5142    时间: 2011-8-18 16:42
不服不行,谢谢了
作者: trulyzeng    时间: 2011-8-18 18:25
THANKS A LOT
作者: dsz5142    时间: 2011-8-22 18:10
太帅了。强人啊
作者: xhdd    时间: 2011-11-6 22:59
学习,谢谢!
作者: kent_73    时间: 2012-2-17 09:50
谢谢分享
作者: TWH852002    时间: 2012-2-22 15:44
真真真真的好
作者: alonet    时间: 2013-1-25 16:35
看看
作者: snddzxb    时间: 2013-6-5 19:51
学习中
作者: huangli0356    时间: 2013-6-24 14:41
谢谢分享..
作者: 张玉军    时间: 2013-8-18 16:57
学习
作者: 李力军2    时间: 2013-9-1 10:39
有创意,不错!
作者: wenbin_zheng    时间: 2013-9-2 11:25
不错,支持
作者: 愚加熊    时间: 2014-4-30 11:34
谢谢
作者: 愚加熊    时间: 2014-4-30 13:18
太厉害了,学习
作者: sunqingyu    时间: 2014-12-7 21:30
hhhhhhhhhhhhhhhhhhhh
作者: fxl54288    时间: 2014-12-24 10:18
太有创意了,学习
作者: 明镜    时间: 2015-3-25 15:43
学习一下学习一下
作者: liumporite    时间: 2015-4-26 12:14
什么玩意儿看看
作者: hunrybecky    时间: 2015-7-25 00:02
正是需要的
作者: Alashome    时间: 2015-11-22 10:55
good
作者: goldpig2015    时间: 2015-11-22 21:30
很好很强大
作者: slyz974    时间: 2016-1-5 16:25
谢谢分享
作者: tang211    时间: 2016-1-21 11:16
学习学习!!!
作者: tang211    时间: 2016-1-21 15:04
密码呢!
作者: tang211    时间: 2016-1-21 15:05
tang211 发表于 2016-1-21 15:04
密码呢!

为啥我要密码解压的呀
作者: zzyzzg    时间: 2016-1-22 18:51
www.office-cn.net




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3