| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3661 人关注过本帖, 2 人收藏
标题:如何实现像excel一样多条件筛选功能
只看楼主 加入收藏
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
结帖率:85.71%
收藏(2)
已结贴  问题点数:20 回复次数:12 
如何实现像excel一样多条件筛选功能
各位大师,
菜菜向大家求教,如何实现像excel一样多条件筛选功能?并将结果显示在listreview中,请大家指点,谢谢。
见附件!
请教.rar (66.91 KB)


[ 本帖最后由 yuk_yu 于 2010-3-15 09:31 编辑 ]
搜索更多相关主题的帖子: 筛选 条件 excel 
2010-03-14 20:58
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
收藏
得分:0 
回复 楼主 yuk_yu
期待大家的帮忙!
2010-03-15 14:58
zhuyongxing
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:234
专家分:482
注 册:2009-8-5
收藏
得分:8 
请教.rar (88.63 KB)

QQ 308749442
2010-03-15 17:01
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
收藏
得分:0 
哦,下来看了……

c语言刚开一学期,就换开VB...
2010-03-15 20:28
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
收藏
得分:0 
回复 3楼 zhuyongxing
兄弟,谢谢你的回复,但是还存在点问题,你的代码只是实现了按一个combo的条件,我要的是我选一个就where =combo1(0),选两个就会是where = combo1(0) and where = combo1(1),以此类推,完全同在excel中筛选一样!
2010-03-16 09:32
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
那就自己组合吧.
没看你的源代码,随手写一个例子吧.

程序代码:
'SQL 命令中,关键字\字段名\值 之间多个空格更不容易出现错误.
dim stmp as string
if 条件1 then             '如果选择了第一个条件
     stmp=stmp & " and 条件1 =" & 条件1
end if
if 条件2 then             '如果选择了第二个条件
     stmp=stmp & " and 条件2 =" & 条件2
end if
if 条件3 then             '如果选择了第三个条件
     stmp=stmp & " and 条件3 =" & 条件3
end if
............ '有几组写几组,如果条件控件是数组,那么用循环也可以.按此类似结果写

'最后生成的结果是: and 条件1=条件1 and 条件2=条件2 ...

if len(stmp)>0 then       '选择过了条件
    stmp="where " &  mid( stmp ,5)    '干掉最前面那个 and ,然后再加上条件头
end if

sql= sql1 & stmp          'sql1 为原始,没有筛选条件的全部查询的 SQL 命令,然后再加上筛选条件形成 含筛选条件的 SQL 命令


再执行后面的命令



[ 本帖最后由 风吹过b 于 2010-3-16 10:13 编辑 ]

授人于鱼,不如授人于渔
早已停用QQ了
2010-03-16 10:11
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
收藏
得分:0 
回复 6楼 风吹过b
谢谢版主,正是我要的,我知道这样写,但我可能智商问题,总是转来转去就出错,版主能帮忙下吗?万分感激!
我用的是控件组!
2010-03-16 11:18
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:12 
在3楼的基础上修改的.
Combo1_Click 这个事件全部重写了.
Form_Load() 这个事件修改了一下.增加了行.


程序代码:
Private Sub Combo1_Click(Index As Integer)

xztj = True
Dim stmp As String

Dim i As Long

For i = 0 To Combo1.Count - 1
    If Combo1(i).ListIndex > 0 Then
        stmp = stmp & " and [" & Trim(Label1(i).Caption) & "] = " & fam(Combo1(i).Text, IIf(i = 1, 2, 1))           '
    End If
Next i

If Len(stmp) > 0 Then
    stmp = " where " & Mid(stmp, 5)
End If
    SQL = "select * from CTSReport" & stmp
Text2.Text = SQL

'xztj = True
'If Index = 0 Then
'SQL = "select * from CTSReport where [" & Trim(Label1(0).Caption) & "] = """ & Combo1(0).Text & """"
'ElseIf Index = 1 Then
'SQL = "select * from CTSReport where [" & Trim(Label1(1).Caption) & "] = #" & Combo1(1).Text & "#"
'ElseIf Index = 2 Then
'SQL = "select * from CTSReport where [" & Trim(Label1(2).Caption) & "] = """ & Combo1(2).Text & """"
'ElseIf Index = 3 Then
'SQL = "select * from CTSReport where [" & Trim(Label1(3).Caption) & "] = """ & Combo1(3).Text & """"
'ElseIf Index = 4 Then
'SQL = "select * from CTSReport where [" & Trim(Label1(4).Caption) & "] = """ & Combo1(4).Text & """"
'End If
'Text2.Text = SQL
End Sub

Private Function fam(cs As String, tt As Long) As String              '根据传入 的类型,加引导符
'tt =1 加引号 ,=2 加 #

Dim bb As String
Select Case tt
    Case 1
        bb = """"
    Case 2
        bb = "#"
End Select

fam = bb & cs & bb
End Function
程序代码:
Private Sub Form_Load()
Dim Dname As String
Dname = App.Path
If Right(Dname, 1) <> "\" Then Dname = Dname & "\"
Dname = Dname & "CTS.mdb"
Cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Dname & " ;Jet OLEDB:Database"    '---------数据库连接
For i = 0 To 4
Combo1(i).AddItem "--空--"                      '增加一项无条件
Call Addcombox(Combo1(i), Trim(Label1(i)))
Combo1(i).Text = Combo1(i).List(0)
Next i
cn.Open Cnstr
S = "select * from CTSReport"
rs.Open S, cn, 1, 1
For i = 0 To rs.Fields.Count - 1
ListView1.ColumnHeaders.Add = rs.Fields.Item(i).Name
Next i
rs.Close
cn.Close
End Sub





[ 本帖最后由 风吹过b 于 2010-3-16 14:52 编辑 ]

授人于鱼,不如授人于渔
早已停用QQ了
2010-03-16 14:23
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
收藏
得分:0 
回复 8楼 风吹过b
太谢谢风吹过及上面的zhuyongxing兄弟指点!!
版主:
   我发现个问题: 单我选定combo1(1)时出错,因为他为时间类型,需要加##号处里,我好菜,不知道怎样处理这样的错误!

[ 本帖最后由 yuk_yu 于 2010-3-16 15:00 编辑 ]
2010-03-16 14:49
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
稍作修改, 没注意你里面有一个日期型的字段.


授人于鱼,不如授人于渔
早已停用QQ了
2010-03-16 14:53
快速回复:如何实现像excel一样多条件筛选功能
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029455 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved