设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 23167|回复: 82
打印 上一主题 下一主题

[模块/函数] [原创]多选组合框及动态查询[实例]

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-11 15:51:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

本帖包含附件





在公共模块中建立函数:
Public Function MultComb()
'本函数可放在窗体的组合框的更改事件属性中或在事件过程中调用
'本函数利用Screen.ActiveControl对象及对象的tag属性扩大其通用性,如有冲突,也可利用公共变量代替
Dim i As Integer, strList As String
    With Screen.ActiveControl
        '用";"作分隔符提取组合框选项列表,此项功能也可应用在其它判断是否在列表中的例程中
        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 = .Value
    End With
End Function

然后在窗体的组合框更新后事件中输入函数:=MultComb(),或在事件过程中调用:

Private Sub Combo0_Change()
    Call MultComb
    Me.Child5.Form.RecordSource = "select * from tem" & IIf(Nz(Combo0, "") = "", "", " where instr(1,'" & Combo0 & "',[字段2])>0")
    Me.Child5.Form.Requery
End Sub

红色部分是动态多选查询的关键。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-6-11 16:10:41 | 只看该作者
支持原创

点击这里给我发消息

3#
发表于 2008-6-11 21:07:30 | 只看该作者
Trynew兄这段时间进入了黄金期哦,先下为快
4#
发表于 2008-6-11 21:13:07 | 只看该作者
[:50] 謝謝分享!
5#
发表于 2008-6-11 22:21:22 | 只看该作者
谢谢分享

点击这里给我发消息

6#
发表于 2008-6-11 22:50:02 | 只看该作者
谢谢,收藏了
7#
发表于 2008-6-17 18:50:55 | 只看该作者
谢谢分享
8#
发表于 2008-7-13 13:34:17 | 只看该作者
[:50] [:50]
9#
发表于 2008-10-4 18:18:58 | 只看该作者
learn it first
10#
发表于 2008-10-4 18:43:14 | 只看该作者
学习一下.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-18 23:38 , Processed in 0.087891 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表